求助(悬关)
查看原帖
求助(悬关)
756826
yhx0322楼主2024/1/11 18:57

其他点都过了,就只有最后一个 hack 数据没过,求调。

#include <bits/stdc++.h>

using namespace std;

const int N = 2e5 + 10;
int tr[N << 2], m, p, ans, n, t, len;
char op[2];

void update(int p, int l, int r, int x, int y) {
    if (l == x && r == x) return tr[p] = y, void();
    int mid = (l + r) >> 1;
    if (x <= mid) update(p << 1, l, mid, x, y);
    else update(p << 1 | 1, mid + 1, r, x, y);
    tr[p] = max(tr[p << 1], tr[p << 1 | 1]);
}

int query(int p, int l, int r, int x, int y) {
    if (l >= x && r <= y) return tr[p];
    int mid = (l + r) >> 1, ans = 0;
    if (x <= mid) ans = query(p << 1, l, mid, x, y);
    if (y > mid) ans = max(ans, query(p << 1 | 1, mid + 1, r, x, y));
    return ans;
}

int main() {
    scanf("%d%d", &m, &p);
    n = m;
    while (m--) {
        scanf("%s%d", op, &t);
        if (op[0] == 'A') update(1, 1, n, ++len, (t + ans) % p);
        else printf("%d\n", ans = query(1, 1, n, len - t + 1, len));
    }
    return 0;
}
2024/1/11 18:57
加载中...