记录编号 617715 评测结果 AAAAAAAAAAAA
题目名称 247.售票系统 最终得分 100
用户昵称 GravatarChenBp 是否通过 通过
代码语言 C++ 运行时间 0.699 s
提交时间 2026-07-23 10:02:36 内存使用 3.96 MiB
显示代码纯文本
#include <iostream>
using namespace std;
const int N = 6e4 + 4, tN = 4 * N;
int tr[tN], lz[tN];
#define mid ((l + r) / 2)
#define lc (u * 2)
#define rc (u * 2 + 1)
void lazy(int u, int l, int r, int v) {
    tr[u] += v;
    lz[u] += v;
}
void pd(int u, int l, int r) {
    if (lz[u]) {
        lazy(lc, l, mid, lz[u]);
        lazy(rc, mid + 1, r, lz[u]);
    }
    lz[u] = 0;
}
void update(int u, int l, int r, int xl, int xr, int v) {
    if (xl <= l && r <= xr) {
        lazy(u, l, r, v);
        return;
    }
    pd(u, l, r);
    if (xl <= mid) update(lc, l, mid, xl, xr, v);
    if (mid + 1 <= xr) update(rc, mid + 1, r, xl, xr, v);
    tr[u] = min(tr[lc], tr[rc]);
}
int query(int u, int l, int r, int xl, int xr) {
    if (xl <= l && r <= xr) return tr[u];
    pd(u, l, r);
    int res = 1e9;
    if (xl <= mid) res = min(res, query(lc, l, mid, xl, xr));
    if (mid + 1 <= xr) res = min(res, query(rc, mid + 1, r, xl, xr));
    return res;
}
int main() {
    int c, s, r;
    cin >> c >> s >> r;
    update(1, 1, c - 1, 1, c - 1, s);
    while (r--) {
        int o, d, n;
        cin >> o >> d >> n;
        if (query(1, 1, c - 1, o, d - 1) >= n) {
            cout << "YES\n";
            update(1, 1, c - 1, o, d - 1, -n);
        } else {
            cout << "NO\n";
        }
    }
    return 0;
}