Submission #1362203

#TimeUsernameProblemLanguageResultExecution timeMemory
1362203viduxFriend (IOI14_friend)C++17
100 / 100
12 ms2540 KiB
#include "friend.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int findSample(int n,int confidence[],int host[],int protocol[]){
	vector<vector<int>> dp(2, vector<int>(n));
	for (int i = 0; i < n; i++) dp[1][i] = confidence[i];
	for (int u = n-1; u > 0; u--) {
		int h = host[u];
		int p = protocol[u];
		if (p == 0) {
			dp[1][h] += dp[0][u];
			dp[0][h] += max(dp[0][u], dp[1][u]);
		}
		if (p == 1) {
			dp[1][h] = max(dp[1][h]+max(dp[0][u], dp[1][u]), dp[0][h]+dp[1][u]);
			dp[0][h] += dp[0][u];
		}
		if (p == 2) {
			dp[1][h] = max(dp[1][h]+dp[0][u], dp[0][h]+dp[1][u]);
			dp[0][h] += dp[0][u];
		}
	}
	return max(dp[0][0], dp[1][0]);
}
#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...