Submission #1178153

#TimeUsernameProblemLanguageResultExecution timeMemory
1178153alexander707070트리 (IOI24_tree)C++20
0 / 100
36 ms4488 KiB
#include<bits/stdc++.h>
#define MAXN 1007
using namespace std;

int n;
vector<int> v[MAXN];
long long cost[MAXN],ans;

long long L,R,sum[MAXN],dp[MAXN];

void init(vector<int> P, vector<int> W){
	n=int(P.size());

	for(int i=1;i<=n;i++)cost[i]=W[i-1];

	for(int i=1;i<P.size();i++){
		v[P[i]+1].push_back(i+1);
	}
}

void solve(int x){
	sum[x]=0;

	for(int i:v[x]){
		solve(i);
		sum[x]+=sum[i];
	}

	if(sum[x]>R){
		ans+=cost[x]*(sum[x]-R);
		sum[x]=R;
	}

	if(sum[x]<L){
		ans+=cost[x]*(L-sum[x]);
		sum[x]=L;
	}
}

long long query(int l, int r){
	L=l; R=r;
	ans=0;
	solve(1);
	return ans;
}

/*int main(){

	init({-1, 0, 0}, {1, 1, 1});
	cout<<query(1,2)<<"\n";

	return 0;
}*/
#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...