제출 #1290136

#제출 시각아이디문제언어결과실행 시간메모리
1290136Jawad_Akbar_JJFriend (IOI14_friend)C++20
100 / 100
16 ms2200 KiB
#include <iostream>

using namespace std;
const int M = 1<<17;
int p[M], q[M];

int findSample(int n, int cnf[], int hst[], int prt[]){
	for (int i=1;i<=n;i++)
		p[i] = cnf[i - 1];

	for (int i=n-1;i;i--){
		int a = hst[i] + 1, b = i + 1;

		if (prt[i] == 0){
			p[a] = p[a] + q[b];
			q[a] = q[a] + max(p[b], q[b]);
		}
		else if (prt[i] == 1){
			p[a] = max(p[a] + p[b], max(p[a] + q[b], p[b] + q[a]));
			q[a] = q[a] + q[b];
		}
		else{
			p[a] = max(p[a] + q[b], p[b] + q[a]);
			q[a] = q[b] + q[a];
		}
		// cout<<a<<" "<<b<<"            "<<p[a]<<" "<<q[a]<<endl;
	}
	return max(p[1], q[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...