Submission #1184866

#TimeUsernameProblemLanguageResultExecution timeMemory
1184866LuvidiTree (IOI24_tree)C++20
10 / 100
2096 ms21396 KiB
#include "tree.h" #include <bits/stdc++.h> using namespace std; #define ll long long const int maxn=2e5; vector<int> ch[maxn]; ll ans; vector<ll> w; int n; ll dfs(int v,ll l,ll r){ ll x=0; for(int u:ch[v]){ x+=dfs(u,l,r); } ll a=l-x,b=r-x,c; if(a>0)c=a; else if(b<0)c=b; else c=0; ans+=abs(c)*w[v]; return x+=c; } void init(std::vector<int> p, std::vector<int> W) { n=p.size(); for(int i:W)w.push_back(i); for(int i=1;i<n;i++)ch[p[i]].push_back(i); } long long query(int l, int r) { ans=0; dfs(0,l,r); return ans; }
#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...