| 比赛 |
2026.9.5 |
评测结果 |
RRRRRRRRRRRRRRR |
| 题目名称 |
To-Do List |
最终得分 |
0 |
| 用户昵称 |
__0w0__ |
运行时间 |
52.222 s |
| 代码语言 |
C++ |
内存使用 |
4.47 MiB |
| 提交时间 |
2026-09-05 11:33:19 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define mod (int)(1e6+3)
//#define s first
//#define e second
int n,ans,res;
int s[1000001],t[1000001];
bool f[1000001];
struct task{
int s,e,i;
bool operator < (const task x)const{
return s<x.s;
}
};
inline int read(){
int x=0;
char c=getchar();
while(!isdigit(c))c=getchar();
while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar();
return x;
}
//multiset<pair<int,int>>S;
multiset<task>S;
int main(){
freopen("List.in","r",stdin);
freopen("List.ans","w",stdout);
cin>>n;
for(int i=1,cnt=0;i<=n;i++){
char op;
cin>>op;
if(op=='A')s[++cnt]=read(),t[cnt]=read();//,cout<<cnt<<"is inserted\n";;
// cin>>s[++cnt]>>t[cnt];
// cout<<"cnt"<<':'<<cnt<<';'<<s[cnt]<<' '<<s[cnt]+t[cnt]-1<<'\n';
s[cnt]=(s[cnt]+res)%mod;
t[cnt]=(t[cnt]+res)%mod;
if(op=='A'){
// S.insert(make_pair(s[cnt],t[cnt]));
S.insert(task{s[cnt],t[cnt],cnt});
}else{
int e;
cin>>e;
e=(e+res)%mod;
// cout<<e<<"is deleted\n";
// auto x=S.find(make_pair(s[e],t[e]));
auto x=S.find(task{s[e],t[e],e});
S.erase(*x);
f[e]=1;
}
ans=0;
multiset<task>::iterator it=S.begin();
for(;it!=S.end();it++){
// pair<int,int> it=j;
task j=*it;
if(f[j.i])continue;
ans++;
ans=max(j.s,ans);
// cout<<j.i<<':'<<j.s<<' '<<j.e<<" ";
// cout<<ans<<' '<<ans+j.e-1<<'\n';
ans+=j.e-1;
}
cout<<ans<<'\n';
res=ans;
}
return 0;
}
/*
12
A 235914 262875
A 666428 285768
A 665699 346436
A 703468 312977
A 546711 221060
D 66137
D 625212
D 339066
D 423757
A 308557 933268
A 979535 631723
D 215043
*/