| 比赛 |
2026.9.5 |
评测结果 |
WWWWWWWWWWWWWWW |
| 题目名称 |
To-Do List |
最终得分 |
0 |
| 用户昵称 |
彭欣越 |
运行时间 |
15.952 s |
| 代码语言 |
C++ |
内存使用 |
65.82 MiB |
| 提交时间 |
2026-09-05 12:59:46 |
显示代码纯文本
#include <bits/stdc++.h>
#define ls p*2
#define rs p*2+1
using namespace std;
typedef long long ll;
const int N=1000010,mod=1000003;
int q,mk[N*4],a[N],b[N],cnt;
ll ans;
struct tree {
ll w,k;
int l,r;
}tr[N*4];
void build (int p,int l,int r) {
tr[p].l=l;
tr[p].r=r;
if (l==r) {
mk[p]=1;
return;
}
int mid=(l+r)/2;
build(ls,l,mid),build(rs,mid+1,r);
}
void pushdown (int p) {
tr[ls].k+=tr[p].k;
tr[rs].k+=tr[p].k;
tr[ls].w+=(tr[ls].r-tr[ls].l+1)*tr[p].k;
tr[rs].w+=(tr[rs].r-tr[rs].l+1)*tr[p].k;
tr[p].k=0;
}
void update (int p,int l,int r,ll k) {
if (l<=tr[p].l&&tr[p].r<=r) {
tr[p].k+=k;
tr[p].w+=k;
return;
}
pushdown(p);
int mid=(tr[p].l+tr[p].r)/2;
if (l<=mid) update(ls,l,r,k);
if (r>mid) update(rs,l,r,k);
tr[p].w=max(tr[ls].w,tr[rs].w);
}
ll query (int p,int l,int r) {
if (l<=tr[p].l&&tr[p].r<=r) {
return tr[p].w;
}
pushdown(p);
int mid=(tr[p].l+tr[p].r)/2;
ll sum=0;
if (l<=mid) sum=max(sum,query(ls,l,r));
if (r>mid) sum=max(sum,query(rs,l,r));
return sum;
}
int main () {
freopen("List.in","r",stdin);
freopen("List.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
build(1,0,1000002);
cin >> q;
while (q--) {
char op;
int x,y;
cin >> op >> x;
x=(x+ans)%mod;
if (op=='A') {
cin >> y;
a[++cnt]=x,b[++cnt]=y;
y=(y+ans)%mod;
update(1,x,x,x);
update(1,0,x,y-1);
ans=tr[1].w;
cout << ans <<"\n";
}else{
update(1,a[x],a[x],-a[x]);
update(1,0,a[x],-b[x]+1);
ans=tr[1].w;
cout << ans <<"\n";
}
}
return 0;
}