This documentation is automatically generated by competitive-verifier/competitive-verifier
// competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/vertex_add_subtree_sum
#include <iostream>
#include <utility>
#include <vector>
#include "binary_tree/fenwick_tree.hpp"
#include "graph/graph.hpp"
#include "tree/dsu_on_tree.hpp"
#include "tree/union_find.hpp"
int main(void) {
int n, q;
std::cin >> n >> q;
Graph<void> g(n);
std::vector<int> a(n);
for (int &x : a) std::cin >> x;
for (int i = 0; i < n - 1; ++i) {
int p;
std::cin >> p;
g.add_edge(p, i + 1);
}
std::vector<std::vector<std::pair<int, int>>> sol(n);
std::vector<std::pair<int, int>> queries;
int solve_count = 0;
for (int i = 0; i < n; ++i) queries.emplace_back(i, a[i]);
while (q--) {
int t;
std::cin >> t;
if (t == 0) {
int u, x;
std::cin >> u >> x;
queries.emplace_back(u, x);
} else {
int u;
std::cin >> u;
sol[u].emplace_back(solve_count++, queries.size());
}
}
std::vector<int> corr(queries.size());
for (int i = 0; i < (int)queries.size(); ++i) { corr[i] = queries[i].first; }
dsu_on_tree dsu(g, corr);
std::vector<std::int64_t> ans(solve_count);
fenwick_tree<std::int64_t> ft(queries.size());
std::vector<std::pair<int, int>> history;
auto rem = [&](int v) {
for (auto &[u, x] : sol[v]) ans[u] = ft.sum(x);
};
auto clear = [&]() {
for (auto [x, y] : history) ft.add(x, -y);
history.clear();
};
auto query = [&](int i) {
auto [x, y] = queries[i];
ft.add(i, y);
history.emplace_back(i, y);
};
dsu.solve(rem, clear, query);
for (int i = 0; i < solve_count; ++i) std::cout << ans[i] << '\n';
return 0;
}
Traceback (most recent call last):
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/resolver.py", line 291, in resolve
bundled_code = language.bundle(path, basedir=basedir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus.py", line 242, in bundle
bundler.update(path)
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 479, in update
self._resolve(pathlib.Path(included), included_from=path)
File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 286, in _resolve
raise BundleErrorAt(path, -1, "no such header")
competitive_verifier.oj.verify.languages.cplusplus_bundle.BundleErrorAt: binary_tree/fenwick_tree.hpp: line -1: no such header
| Env | Name | Status | Elapsed | Memory |
|---|---|---|---|---|
| g++ | example_00 |
|
3 ms | 4 MB |
| g++ | line_00 |
|
852 ms | 207 MB |
| g++ | line_01 |
|
869 ms | 206 MB |
| g++ | max_random_00 |
|
1324 ms | 92 MB |
| g++ | max_random_01 |
|
1278 ms | 92 MB |
| g++ | max_random_02 |
|
1305 ms | 92 MB |
| g++ | random_00 |
|
1000 ms | 76 MB |
| g++ | random_01 |
|
1169 ms | 86 MB |
| g++ | random_02 |
|
313 ms | 22 MB |
| g++ | random_03 |
|
660 ms | 63 MB |
| g++ | random_04 |
|
437 ms | 49 MB |
| g++ | small_00 |
|
4 ms | 4 MB |
| g++ | small_01 |
|
3 ms | 4 MB |
| g++ | small_02 |
|
3 ms | 4 MB |
| g++ | small_03 |
|
4 ms | 4 MB |
| g++ | small_04 |
|
3 ms | 4 MB |