Submission #392347

#TimeUsernameProblemLanguageResultExecution timeMemory
392347rainboyFriend (IOI14_friend)C11
35 / 100
1 ms208 KiB
#include "friend.h"
#include <string.h>

#define N	100000

int max(int a, int b) { return a > b ? a : b; }

int findSample(int n, int *aa, int *pp, int *tt) {
	static int dp[N], dq[N];
	int i;

	memcpy(dp, aa, n * sizeof *aa);
	for (i = n - 1; i >= 0; i--) {
		dp[i] = max(dp[i], dq[i]);
		if (i > 0) {
			if (tt[i] == 0)
				dp[pp[i]] += dq[i], dq[pp[i]] += dp[i];
			else if (tt[i] == 1)
				dp[pp[i]] += dp[i], dq[pp[i]] += dq[i];
			else
				dp[pp[i]] = max(dp[pp[i]], dp[i]), dq[pp[i]] += dq[i];
		}
	}
	return dp[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...