Submission #1368038

#TimeUsernameProblemLanguageResultExecution timeMemory
1368038FaresSTHTree (IOI24_tree)C++20
10 / 100
2094 ms21280 KiB
#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
const int mxn=2e5+5;
vector<int>g[mxn],a(mxn);
ll res=0;
ll dfs(int i,int p,int l,int r){
	if(g[i].empty()){
		res+=1ll*a[i]*l;
		return l;
	}
	ll sum=0;
	for(int j:g[i])if(j!=p)sum+=dfs(j,i,l,r);
	if(sum>=r){
		res+=1ll*a[i]*(sum-r);
		return r;
	}
	return sum;
}
void init(std::vector<int> p, std::vector<int> w){
	for(int i=0;i<(int)p.size();i++)g[p[i]].push_back(i),a[i]=w[i];
}
long long query(int l, int r){
	res=0;
	dfs(0,-1,l,r);
	return res;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...