蒟蒻求助,最后一个点过不了
查看原帖
蒟蒻求助,最后一个点过不了
182229
songyuan888楼主2020/8/27 12:50

这是咋回事啊

#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;
}
2020/8/27 12:50
加载中...