Submission #1211335

#TimeUsernameProblemLanguageResultExecution timeMemory
1211335sula2Tree (IOI24_tree)C++20
0 / 100
2096 ms22176 KiB
#include <bits/stdc++.h> #define all(a) a.begin(), a.end() #define popcount(x) __builtin_popcountll(x) using namespace std; using namespace chrono; vector<int> adj[200000]; int W[200000], n; void init(vector<int> P, vector<int> a) { n = P.size(); for (int i = 1; i < n; i++) { adj[P[i]].push_back(i); } for (int i = 0; i < n; i++) { W[i] = a[i]; } } pair<long long, long long> solve(int L, int R, int u = 0) { long long ans = 0, sum = 0; for (int v : adj[u]) { auto [_ans, _sum] = solve(L, R, v); ans += _ans; sum += _sum; } // Make it L int C1 = L - sum; // Make it R int C2 = R - sum; if (abs(C1) < abs(C2)) return {ans + abs(C1)*W[u], L}; else return {ans + abs(C2)*W[u], R}; } long long query(int L, int R) { return solve(L, R).first; }
#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...