蒟蒻求调
查看原帖
蒟蒻求调
644963
ln001楼主2023/9/28 16:24

只过了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;
}

2023/9/28 16:24
加载中...