提出 #74880123
ソースコード 拡げる
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using i64 = long long;
struct PersistentSegTree {
struct Node {
i64 sum;
int l, r;
};
int n, tot;
vector<Node> tr;
PersistentSegTree() {}
PersistentSegTree(int n, int maxNode) {
init(n, maxNode);
}
void init(int _n, int maxNode) {
n = _n;
tot = 0;
tr.assign(maxNode + 1, {0, 0, 0});
}
int clone(int p) {
tr[++tot] = tr[p];
return tot;
}
int modify(int p, int l, int r, int pos, int val) {
int u = clone(p);
if (l == r) {
tr[u].sum = val;
return u;
}
int mid = (l + r) >> 1;
if (pos <= mid) {
tr[u].l = modify(tr[p].l, l, mid, pos, val);
} else {
tr[u].r = modify(tr[p].r, mid + 1, r, pos, val);
}
tr[u].sum = tr[tr[u].l].sum + tr[tr[u].r].sum;
return u;
}
i64 query(int p, int l, int r, int ql, int qr) {
if (!p) {
return 0;
}
if (ql <= l && r <= qr) {
return tr[p].sum;
}
int mid = (l + r) >> 1;
i64 res = 0;
if (ql <= mid) {
res += query(tr[p].l, l, mid, ql, qr);
}
if (qr > mid) {
res += query(tr[p].r, mid + 1, r, ql, qr);
}
return res;
}
int modify(int root, int pos, int val) {
return modify(root, 1, n, pos, val);
}
i64 query(int root, int l, int r) {
return query(root, 1, n, l, r);
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n, m, q;
cin >> n >> m >> q;
PersistentSegTree seg(m, (q + 5) * 25);
vector<int> root(n + 1, 0);
while (q--) {
int op;
cin >> op;
if (op == 1) {
int x, y;
cin >> x >> y;
root[x] = root[y];
} else if (op == 2) {
int x, y, z;
cin >> x >> y >> z;
root[x] = seg.modify(root[x], y, z);
} else {
int x, l, r;
cin >> x >> l >> r;
cout << seg.query(root[x], l, r) << endl;
}
}
return 0;
}
提出情報
| 提出日時 |
|
| 問題 |
G - Copy Query |
| ユーザ |
NoobDidi |
| 言語 |
C++23 (GCC 15.2.0) |
| 得点 |
600 |
| コード長 |
2330 Byte |
| 結果 |
AC |
| 実行時間 |
79 ms |
| メモリ |
82340 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
600 / 600 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample_01.txt |
| All |
evil_01.txt, evil_02.txt, evil_03.txt, evil_04.txt, evil_05.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| evil_01.txt |
AC |
72 ms |
82260 KiB |
| evil_02.txt |
AC |
76 ms |
82232 KiB |
| evil_03.txt |
AC |
75 ms |
82280 KiB |
| evil_04.txt |
AC |
76 ms |
82260 KiB |
| evil_05.txt |
AC |
79 ms |
82336 KiB |
| sample_01.txt |
AC |
1 ms |
3484 KiB |
| test_01.txt |
AC |
1 ms |
3588 KiB |
| test_02.txt |
AC |
1 ms |
3520 KiB |
| test_03.txt |
AC |
1 ms |
3444 KiB |
| test_04.txt |
AC |
47 ms |
81500 KiB |
| test_05.txt |
AC |
52 ms |
81540 KiB |
| test_06.txt |
AC |
52 ms |
81540 KiB |
| test_07.txt |
AC |
57 ms |
81492 KiB |
| test_08.txt |
AC |
57 ms |
81500 KiB |
| test_09.txt |
AC |
59 ms |
81488 KiB |
| test_10.txt |
AC |
59 ms |
81488 KiB |
| test_11.txt |
AC |
60 ms |
82260 KiB |
| test_12.txt |
AC |
60 ms |
82324 KiB |
| test_13.txt |
AC |
60 ms |
82268 KiB |
| test_14.txt |
AC |
58 ms |
81764 KiB |
| test_15.txt |
AC |
58 ms |
81872 KiB |
| test_16.txt |
AC |
61 ms |
82316 KiB |
| test_17.txt |
AC |
69 ms |
82136 KiB |
| test_18.txt |
AC |
67 ms |
82340 KiB |
| test_19.txt |
AC |
62 ms |
82308 KiB |
| test_20.txt |
AC |
68 ms |
82276 KiB |