Submission #1046441

#TimeUsernameProblemLanguageResultExecution timeMemory
1046441tolbiFriend (IOI14_friend)C++17
100 / 100
15 ms2184 KiB
#include "friend.h"
#define max(x,y) (x>y?x:y)
// Find out best sample
int findSample(int n,int confidence[],int host[],int protocol[]){
	int dp[n][2]={};
	for (int i = 0; i < n; ++i)
	{
		dp[i][1]=confidence[i];
	}
	for (int i = n-1; i >= 1; i--){
		int nd = host[i];
		if (protocol[i]==0){
			dp[nd][0]+=max(dp[i][1],dp[i][0]);
			dp[nd][1]+=dp[i][0];
		}
		else if (protocol[i]==1){
			dp[nd][1]=max(dp[nd][1]+max(dp[i][0],dp[i][1]),dp[nd][0]+dp[i][1]);
			dp[nd][0]+=dp[i][0];
		}
		else {
			dp[nd][1]=max(dp[nd][1]+dp[i][0],dp[nd][0]+dp[i][1]);
			dp[nd][0]+=dp[i][0];
		}
	}
	return max(dp[0][0],dp[0][1]);
}
#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...