求助
查看原帖
求助
242524
JRzyh楼主2020/12/7 20:27

70pts做法

没过样例

#include<bits/stdc++.h>
using namespace std;
int a[100008],n,T;
int solve()
{
	set<pair<int,int> >t;
	for(int i=1;i<=n;i++)
	{
		t.insert(make_pair(a[i],i));
	}
	int f=0,ans;
	while(1)
	{
		if(t.size()==2)
		{
			t.erase(t.begin());
			if(f)ans=f+((f-t.size())&1);
			else ans=1;
			break;
		}
		set<pair<int, int> >::iterator it=t.end();
		it--;
		pair<int, int>it1=*t.begin(),it2=*it;
		t.erase(it);
		t.erase(t.begin());
		t.insert(make_pair(it2.first-it1.first,it2.second));
		if(t.begin()->second!=it2.second)
		{
			if(f)
			{
				ans=f+((f-t.size())&1);
				break;
			}
			else if(!f)f=t.size();
		}
	}
	return ans;
}
int main()
{
	cin>>T;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i]; 
	}
	cout<<solve()<<endl;
	T--;
	while(T--)
	{
		int x;
		cin>>x;
		for(int i=1;i<=x;i++)
		{
			int idx;
			cin>>idx;
			cin>>a[idx];
		}
		cout<<solve()<<endl;
	}
 	return 0;
}

2020/12/7 20:27
加载中...