这是咋回事啊
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
long long n,i,k,ma,a[1000010],b[1000010],c[1000010],d[1000010];
int main()
{
cin>>n>>k;
ma=-100;
for(i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
if(ma<b[i])
ma=b[i];
c[a[i]]=c[a[i]]+a[i]*b[i];
d[a[i]]=d[a[i]]+b[i];
}
if(n==1)
{
if(k!=0||b[1]<2)
cout<<"NO"<<endl;
else
cout<<a[1]*b[1]<<endl;
return 0;
}
if(n==2)
{
int t;
t=abs(a[1]-a[2]);
if(b[1]==0||b[2]==0)
cout<<"NO"<<endl;
else
{
if(t==k)
cout<<a[1]*min(b[1],b[2])+a[2]*min(b[1],b[2])<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
if(k==0)
{
sort(c+1,c+ma+1);
if(c[ma]==1)
cout<<"NO"<<endl;
else
cout<<c[ma]<<endl;
return 0;
}
else
{
long long v;
long long maxx;
maxx=-1000;
for(i=0;i<=1000000-k;i++)
{
v=min(d[i],d[i+k]);
if(d[i]>=1&&d[i+k]>=1&&maxx<v*(i+i+k))
maxx=v*(i+k+i);
}
if(maxx!=-1000)
cout<<maxx<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}