CCF CSP 202012-2 100分代码

只能一层循环,两层循环就会超时。i9

#include
#include
using namespace std;

struct Stu{
     
	int y;
	int result;
};

bool cmp(Stu a,Stu b)
{
     
	return a.y<b.y;
}
int main()
{
     
	long long n;
	cin>>n;
	Stu s[n];
	
	for(int i=0;i<n;i++)
	{
     
		cin>>s[i].y>>s[i].result;
	}
	sort(s,s+n,cmp);
	int t=s[0].y;
	int c=0;
	for(int j=0;j<n;j++)
	{
     
		if(s[j].y<t && s[j].result==0 || s[j].y>=t && s[j].result==1)
		{
     
			c++;
		}
	}
	int edi=s[0].y;
	int ed=s[0].result;
	int maxi=t;
	int max=c;
	int f=0,flag=0;
	for(int i=1;i<n;i++)
	{
     
		int f1=0;
		if(s[i].y==edi)
			f1=1;
		if(f1==1 || f==1)
		{
     
			flag==1;
			f1=0;
			f=0;
		}
		else
			flag=0;	
		if(ed==0 && s[i].result==0 && !flag)
		{
     
			c++;
		}
		else if(ed==1 && s[i].result==0 && !flag)
		{
     
			c--;
		}
		else if(ed==0 && s[i].result==1 && !flag)
		{
     
			c++;
		}
		else if(ed==1 && s[i].result==1 && !flag)
		{
     
			c--;
		}
		if(max<=c)
		{
     
			max=c;
			maxi=s[i].y;
		}
		edi=s[i].y;
		ed=s[i].result;
		f=f1;
	}
	cout<<maxi;
	return 0;
}

你可能感兴趣的:(CSP,csp,ccf,c++)