比赛 2026.9.5 评测结果 AAWWWWWWWWWWWWW
题目名称 To-Do List 最终得分 12
用户昵称 ChenBp 运行时间 8.534 s
代码语言 C++ 内存使用 22.75 MiB
提交时间 2026-09-05 12:48:11
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
using ll=long long;
const int N=1e6+6,p=1e6+3;
struct node{
    int s,t;
    int p,n;
    int id;
    node(){
        s=t=p=n=id=0;
    }
    node(int _s,int _t,int _p,int _n,int _i){
        s=_s,t=_t,p=_p,n=_n,id=_i;
    }
}a[N];
struct nod{
    ll s;
    mutable int t;
    nod(){
        s=t=0;
    }
    nod(int _s,ll _t){
        s=_s;
        t=_t;
    }
    bool operator<(const nod& o) const& {
        return s<o.s;
    }
};
int main(){
    freopen("List.in","r",stdin);
    freopen("List.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
    int q;
    cin>>q;
    if(q<=3000){
        ll lans=0;
        a[1]=node(0,0,0,2,0);
        a[2]=node(0,0,1,0,0);
        int cnt=2,num=0;
        while(q--){
            char c;
            cin>>c;
            if(c=='A'){
                int s,t;
                cin>>s>>t;
                s=(s+lans)%p;
                t=(t+lans)%p;
                a[++cnt]=node();
                for(int i=1;i!=2;i=a[i].n){
                    if(a[i].s<=s&&(a[i].n==2||s<=a[a[i].n].s)){
                        a[cnt]=node(s,t,i,a[i].n,++num);
                        a[a[i].n].p=cnt;
                        a[i].n=cnt;
                        break;
                    }
                }
            }else{
                int x;
                cin>>x;
                x=(x+lans)%p;
                for(int i=1;i!=2;i=a[i].n){
                    if(a[i].id==x){
                        a[a[i].p].n=a[i].n;
                        a[a[i].n].p=a[i].p;
                        break;
                    }
                }
            }
            ll l=0;
            for(int i=a[1].n;i!=2;i=a[i].n){
                if(a[i].s<=l) l+=a[i].t;
                else l=a[i].s+a[i].t-1;
            }
            cout<<(lans=l)<<"\n";
        }
        return 0;
    }
    
    multiset<nod>st;
    multiset<ll>ans;
    ll lans=0;
    while(q--){
        char c;
        cin>>c;
        if(c=='A'){
            int s,t;
            cin>>s>>t;
            s=(s+lans)%p;
            t=(t+lans)%p;
            nod now=nod(s,t);
            st.insert(now);
            auto x=st.lower_bound(now);
            if(x!=st.begin()){
                auto pre=prev(x);
                if(pre->s+pre->t-1<=s){
                    ans.erase(pre->s+pre->t);
                    pre->t+=t;
                    st.erase(x);
                    x=pre;
                }
            }
            auto nxt=next(x);
            while(nxt!=st.end()){
                if(nxt->s<=x->s+x->t-1){
                    x->t+=nxt->t;
                    ans.erase(nxt->s+nxt->t);
                    st.erase(nxt);
                    nxt=next(x);
                }else break;
            }
            ans.insert(x->s+x->t);
        }else{
            int x;
            cin>>x;
            x=(x+lans)%p;
            cout<<"GUGUGAGA\n";
            continue;
        }
        cout<<(lans=*(--ans.end())-1)<<"\n";
    }
    return 0;
}