| 比赛 |
2026.9.5 |
评测结果 |
AAAAAAAAAAAAAAA |
| 题目名称 |
To-Do List |
最终得分 |
100 |
| 用户昵称 |
RpUtl |
运行时间 |
9.967 s |
| 代码语言 |
C++ |
内存使用 |
47.93 MiB |
| 提交时间 |
2026-09-05 09:32:14 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;
const int V = 1e6 + 3;
const ll inf = 2e12;
int s[N], t[N], n, q;
ll st[N], ans;
struct sgt {
ll mx[N << 2], sum[N << 2];
#define ls (p << 1)
#define rs (p << 1 | 1)
void pushup(int p) {
sum[p] = sum[ls] + sum[rs];
mx[p] = max(mx[rs], mx[ls] + sum[rs]);
}
void init(int p, int x) {
if (!st[x]) mx[p] = -inf, sum[p] = 0;
else mx[p] = x + st[x], sum[p] = st[x];
}
void upd(int p, int l, int r, int x) {
if (l == r) {
init(p, x);
} else {
int mid = (l + r) >> 1;
if (x <= mid) upd(ls, l, mid, x);
if (x > mid) upd(rs, mid + 1, r, x);
pushup(p);
}
}
void build(int p, int l, int r) {
if (l == r) {
init(p, l);
} else {
int mid = (l + r) >> 1;
build(ls, l, mid);
build(rs, mid + 1, r);
pushup(p);
}
}
} T;
int main() {
freopen("List.in", "r", stdin);
freopen("List.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
T.build(1, 1, V);
cin >> q;
string o;
ll x;
for (int _ = 1; _ <= q; _++) {
cin >> o;
if (o[0] == 'A') {
++n;
cin >> s[n] >> t[n];
s[n] = (s[n] + ans) % V;
t[n] = (t[n] + ans) % V;
st[s[n]] += t[n];
T.upd(1, 1, V, s[n]);
} else if (o[0] == 'D') {
cin >> x;
x = (x + ans) % V;
st[s[x]] -= t[x];
T.upd(1, 1, V, s[x]);
}
ans = T.mx[1] - 1;
cout << ans << '\n';
}
return 0;
}