求优化 T
查看原帖
求优化 T
760418
not_exist楼主2023/8/28 21:19
#include <bits/stdc++.h>
using namespace std;
#define int long long
int maxn;

struct doubles{
    int a,b;
};
vector<doubles> x;
void get(){
    maxn=-INFINITY;
    for(int j = 0; j < x.size(); ++j) {
        if(x[j].b>maxn){
            maxn=x[j].b;
        }
    }
}

signed main()
{
    int c,q;
    bool tmp=0;
    cin>>c>>q;
    for (int i = 0; i < q; ++i) {
        int op,d;
        cin>>op;
        if(op!=4){
            cin>>d;
        }
        if(op==1){
            x.push_back({1,d});
            tmp=0;
        }
        if(op==2){
            while(d>=(x.front().b-x.front().a+1)){
                d-=(x.front().b-x.front().a+1);
                x.erase(x.begin());
                if(!d){
                    break;
                }
            }
            if(d){
                x.front().a=x.front().a+d;
            }
            tmp=0;
        }
        if(op==3){
            int s=0,p=0;
            for(int j=0; s + x[j].b - x[j].a + 1 < d; j++){
                s+=(x[j].b - x[j].a + 1);
                p=j+1;
            }
            cout<< x[p].a + d-s-1<<"\n";
        }
        if(op==4){
            if(!tmp){
                get();
                tmp=1;
            }
            cout<<maxn<<"\n";
        }
    }
    return 0;
}
2023/8/28 21:19
加载中...