把数据下载下来之后在本地测试了几遍,答案都是对的,但是提交就显示答案是错的……
#include <bits/stdc++.h>
using namespace std;
int t,n,init[3000005],s[3000005];
deque<int> q;
int main(){
cin>>t;
for(int o=1;o<=t;o++){
if(o==1){
memset(init,0,sizeof(init));
memset(s,0,sizeof(s));
cin>>n;
for(int i=1;i<=n;i++) cin>>init[i];
}else{
int id,num,xgcs;
cin>>xgcs;
for(int i=1;i<=xgcs;i++){
cin>>id>>num;
init[id]=num;
}
}
for(int i=1;i<=n;i++) s[i]=init[i];
int head=1,tail=n,ans=n;
while(!q.empty()) q.pop_front();
while(1){
if(ans==2){
ans=1;
break;
}
ans--;
int nmax,nmin;
if(q.empty()||s[head]<=q.front()){
nmin=s[head];
head++;
}else{
nmin=q.front();
q.pop_front();
}
if(q.empty()||s[tail]>q.back()){
nmax=s[tail];
tail--;
}else{
nmax=q.back();
q.pop_back();
}
int now=nmax-nmin;
//cout<<nmax<<" "<<nmin<<" "<<now<<endl;
if(now>=min(s[head],q.front())){
q.push_front(now);
}else break;
}
if(ans==n-1) ans++;
cout<<ans<<endl;
}
return 0;
}