WA40,前8个点AC后面全是WA
#include<bits/stdc++.h>
#define in(x) scanf("%d",&x)
#define out(x) printf("%d",x)
#define outs(x) printf(x)
#define ed printf("\n")
#define ll long long
#define ull unsigned long long
#define mpr make_pair
#define pr pair<int,int>
#define fo(i,a,b) for(int i=a;i<=b;++i)
#define fu(i,a,b) for(int i=a;i<b;++i)
#define INF 2139062143
#define Aranea_Debug
#define N 1000010
#define v first
#define id second
using namespace std;
int a[N];
int main()
{
int meow,n;
in(meow);
fu(nyan,0,meow)
{
if(!nyan)
{
in(n);
fu(i,0,n)in(a[i]);
}
else
{
int k,x,y;in(k);
while(k--)in(x),in(y),a[x-1]=y;
}
//cerr<<"\nnew turn:\n";
deque<pr>q1,q2;
fu(i,0,n)
//q1.push_back(mpr(a[i],i)),cerr<<a[i]<<' ';
q1.push_back(mpr(a[i],i));
//cerr<<endl;
int ans;
while(true)
{
if(q1.size()+q2.size()==2)
{
ans=1;
break;
}
pr mn=q1.front(),mx;
q1.pop_front();
if(q2.empty()||(!q1.empty()&&q1.back().v>q2.back().v))
mx=q1.back(),q1.pop_back();
else mx=q2.back(),q2.pop_back();
pr now=mpr(mx.v-mn.v,mx.id);
//cerr<<now.v<<' '<<mx.v<<' '<<mn.v<<endl;
if(!q1.empty()&&now.v>q1.front().v)
q2.push_front(now);
if(now.v<q1.front().v||q1.empty())//"冒险"
{
int cnt=0;
ans=q1.size()+q2.size()+2;//不吃
while(true)
{
++cnt;
if(q1.size()+q2.size()+1==2)
break;
pr neww;
if(q2.empty()||(!q1.empty()&&q1.back().v>q2.back().v))
neww=q1.back(),q1.pop_back();
else neww=q2.back(),q2.pop_back();
now=mpr(neww.v-now.v,neww.id);
if((!q1.empty()&&now.v>q1.front().v)||(!q2.empty()&&now.v>q2.front().v))//递归结束
break;
}
ans=(cnt%2 ? ans : ans-1);
break;
}
}
out(ans),ed;
}
return 0;
}
一个hack
1
15
0 1 2 2 2 2 3 3 4 5 5 6 7 8 8
ans 8
我的输出是7()