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;
}