제출 #162052

#제출 시각아이디문제언어결과실행 시간메모리
162052oolimry친구 (IOI14_friend)C++14
35 / 100
3 ms428 KiB
#include "friend.h"
#include <bits/stdc++.h>

using namespace std;

int findSample(int n, int confidence[], int host[], int protocol[]) {
	
	bool two = true;
	bool three = true;
	bool four = true;
	for(int i = 1;i < n;i++){
		if(protocol[i] != 0) four = false;
		if(protocol[i] != 2) three = false;
		if(protocol[i] != 1) two = false;
	}
	if(four){
		vector<int> child[n];
		for(int i = 1;i < n;i++){
			child[host[i]].push_back(i);
		}
		typedef pair<int,int> ii;
		ii dp[n];
		fill(dp,dp+n,ii(0,0));
		for(int u = n-1;u >= 0;u--){
			dp[u] = ii(confidence[u],0);
			for(int v : child[u]){
				dp[u].first += dp[v].second;
				dp[u].second += dp[v].first;
			}
			dp[u].first = max(dp[u].second,dp[u].first);
		}
		return dp[0].first;
	}
	else if(three){
		    long long s = 0;
			for(int i = 0;i < n;i++){
				s = max((long long)confidence[i],s);
			}
			return s;
	}
	else if(two){
		long long s = 0;
		for(int i = 0;i < n;i++){
			s += confidence[i];
		}
		return s;
	}
	
	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...