比赛 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;
}