50pts求优化,玄关!
查看原帖
50pts求优化,玄关!
1021786
GeorgeDeng楼主2024/12/14 15:48
#include <iostream>
#include <cstdio>
using namespace std;

struct node{
	int l,r;
};
node q[200005];
int l = 1,r = 0;
signed main()
{
//	freopen("queue2.in","r",stdin);
//	freopen("queue.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    int c,t;
    int op;
    int x;
    cin>>c>>t;
    int maxn = -2147483648;
    while(t--){
    	cin>>op;
    	if(op==1){
    		cin>>x;
    		q[++r] = {1,x};
		}else if(op==2){
			cin>>x;
			while(l<=r&&x>0){
				int a = q[l].l,b = q[l].r;
				l++;
				if(b-a+1<=x){
					x-=(b-a+1);
				}else{
					int nr = a+x-1;
					x-=(nr-a+1);
					q[--l] = {nr+1,b};
					break;
				}
			}
		}else if(op==3){
			cin>>x;
			for(int i = l;i<=r;i++){
				int a = q[i].l,b = q[i].r;
				if(b-a+1<x){
					x-=(b-a+1);
				}else{
					cout<<q[i].l+x-1<<endl;
					break;
				}
			}
		}else{
			maxn = -2147483648;
			for(int i = l;i<=r;i++){
				maxn = max(maxn,q[i].r);
			}
			cout<<maxn<<endl;
		}
	} 
	return 0;
}

AC on #1,2,3,4,5,6,7,8,17,18。

其余 TLE。

2024/12/14 15:48
加载中...