| 比赛 |
2026.9.5 |
评测结果 |
AAAAAAAAAAAAAAA |
| 题目名称 |
To-Do List |
最终得分 |
100 |
| 用户昵称 |
PXCZM |
运行时间 |
9.044 s |
| 代码语言 |
C++ |
内存使用 |
70.82 MiB |
| 提交时间 |
2026-09-05 11:46:30 |
显示代码纯文本
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e6+3;
int n;
ll ans;
struct sgt
{
ll sum,Min;
sgt() : sum(0),Min(0){}
}t[4000010];
sgt operator+(const sgt& s1,const sgt& s2)
{
if(s1.Min==0) return s2;
if(s2.Min==0) return s1;
sgt res;
res.sum=s1.sum+s2.sum;
res.Min=max(s1.Min+s2.sum,s2.Min);
return res;
}
void update(int rt,int l,int r,int pos,int val)
{
if(l==r)
{
t[rt].sum+=val;
if(t[rt].sum) t[rt].Min=l+t[rt].sum-1;
else t[rt].Min=0;
return;
}
int mid=(l+r)>>1,ls=rt<<1,rs=rt<<1|1;
if(pos<=mid) update(ls,l,mid,pos,val);
else update(rs,mid+1,r,pos,val);
t[rt]=t[ls]+t[rs];
}
int a[1000010],b[1000010],cnt;
int main()
{
freopen("List.in","r",stdin);
freopen("List.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
cin>>n;
for(int i=1;i<=n;i++)
{
char op; cin>>op;
ll ss,tt,dd;
if(op=='A')
{
cin>>ss>>tt;
ss=(ss+ans)%mod;
tt=(tt+ans)%mod;
a[++cnt]=ss;
b[cnt]=tt;
update(1,1,1e6,ss,tt);
}
else
{
cin>>dd;
dd=(dd+ans)%mod;
update(1,1,1e6,a[dd],-b[dd]);
}
ans=t[1].Min;
cout<<ans<<'\n';
}
return 0;
}