#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, k, t[N];
long long ans = -1;
int main () {
scanf("%d%d", &n, &k);
for(int i = 1, x, y;i <= n;++i) {
scanf("%d%d", &x, &y);
t[x] += y;
}
for(int i = 0;i <= 1e6-k;++i)
if(t[i] && t[i+k]) {
int r = !k ? i : 2*i+k;
if(min(t[i], t[i+k]) != 1) ans = max(ans, 1ll*r*min(t[i], t[i+k]));
}
if(ans != -1) printf("%lld", ans);
else puts("NO");
return 0;
}
为什么要加上 min(t[i],t[i+k]!=1)才能通过此题目?