Submission #1187988

#TimeUsernameProblemLanguageResultExecution timeMemory
1187988nikdTree (IOI24_tree)C++20
10 / 100
2095 ms22944 KiB
#include "tree.h" #include <bits/stdc++.h> using ll = long long; using namespace std; int n; vector<vector<int>> adj; vector<ll> w; void init(std::vector<int> P, std::vector<int> W) { n = P.size(); adj.resize(n); w.resize(n); for(int i = 0; i<n; i++) w[i] = W[i]; for(int i = 1; i<n; i++) adj[P[i]].push_back(i); } long long query(int L, int R) { ll r = R; ll l = L; ll sol = 0; function<ll(int)> dfs = [&](int v)->ll{ if(!adj[v].size()){ sol += w[v]*l; return l; } ll sz = 0; for(int u: adj[v]){ sz += dfs(u); } if(sz <= r) return sz; sol += (sz-r)*w[v]; return r; }; dfs(0); return sol; }
#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...