Submission #1237121

#TimeUsernameProblemLanguageResultExecution timeMemory
1237121ericl23302Tree (IOI24_tree)C++20
0 / 100
2096 ms22944 KiB
#include "tree.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int n; std::vector<int> p, w; vector<vector<int>> adjacency; void init(std::vector<int> P, std::vector<int> W) { p = P; w = W; n = (int)p.size(); adjacency.resize(n); for (int i = 1; i < n; ++i) adjacency[p[i]].push_back(i); } pair<ll, ll> recurse(int cur, int l, int r) { if (adjacency[cur].size() == 0) return {l, l * w[cur]}; ll tot = 0, res = 0; for (auto &child : adjacency[cur]) { auto curRes = recurse(child, l, r); tot += curRes.first; res += curRes.second; } if (tot > r) res += (tot - r) * w[cur], tot = r; return {tot, res}; } long long query(int L, int R) { return recurse(0, L, R).second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...