rt,代码如下,如果您猜到是哪一题也不用提交,反正是错的
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+8;
int n,snake[N];
void answer(){
int ans=0;
deque< pair<int,int> > q2;
priority_queue< pair<int,int> > q;
for(int i=1;i<=n;i++)
q.push(make_pair(i,snake[i]));
while(!q.empty()){
q2.push_back(q.top());
q.pop();
}
for(int i=1;i<=n;i++){
q.push(q2.front());
q2.push_back(q2.front());
q2.pop_front();
}
while(!q.empty()){
int stronger=q.top().second,strongerid=q.top().first;
q.pop();
int secstronger=q.top().second,secstrongerid=q.top().first;
int waker=q2.back().second,wakerid=q2.back().first;
if(stronger>waker||(stronger==waker&&strongerid>wakerid)){
if(stronger-waker>secstronger||(stronger-waker==secstronger&&strongerid>secstrongerid)){
ans++;
q2.pop_back();
q.push(make_pair(strongerid,stronger-waker));
}
}
}
printf("%d\n",ans);
return ;
}
int main(){
int T;
scanf("%d",&T);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&snake[i]);
}
answer();
T--;
while(T--){
int k;
scanf("%d",&k);
while(k--){
int x,y;
scanf("%d%d",&x,&y);
snake[x]=y;
}
answer();
}
return 0;
}