只过了9,10,11,12四个点,测试大样例的时候有时输出负数,求大神指点
//#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
const long long INF=0x3f3f3f3f3f3f3f3f,Q=2e5+10;
struct Z{
long long la;
long long ne=INF;
long long a=1,b;
}z[Q];
long long q;
long long le=1,ri=0;
deque<long long>d2;
signed main()
{
//freopen("in.in","r",stdin);
//freopen("out.out","w",stdout);
cin>>q;
cin>>q;
for(long long jj=1;jj<=q;jj++){
short op;
long long a;
cin>>op;
//cout<<jj<<endl;
if(op==1){
cin>>a;
z[ri].ne=ri++;
z[ri].b=a;
z[ri].la=ri-1;
while(d2.size()!=0&&z[d2.back()].b<a)d2.pop_back();
d2.push_back(ri);
}
else if(op==2){
cin>>a;
while(a!=0){
if(z[le].b-z[le].a+1<=a){
a-=z[le].b-z[le].a+1;le++;
if(le-1==d2.front())d2.pop_front();
}
else{z[le].a+=a;a=0;}
}
}
else if(op==3){
cin>>a;
long long lee=le;
while(a!=0){
if(z[lee].b-z[lee].a+1<a){a-=z[lee].b-z[lee].a+1;lee++;}
else{cout<<a-z[lee].a+1<<endl;a=0;}
}
}
else if(op==4){
cout<<z[d2.front()].b<<endl;
}
}
return 0;
}