Submission #145480

# Submission time Handle Problem Language Result Execution time Memory
145480 2019-08-20T07:19:11 Z TAMREF Friend (IOI14_friend) C++11
46 / 100
38 ms 4956 KB
#include "friend.h"
#include <bits/stdc++.h>
#define all(v) (v).begin(),(v).end()
using namespace std;

int n;
vector<int> c, h, p;

int bf(){
	vector<vector<int>> e(n, vector<int>(n));
	for(int i = 1; i < n; i++){
		switch(p[i]){
			case 0:
			e[h[i]][i] = e[i][h[i]] = 1;
			break;
			case 1:
			for(int j = 0; j < i; j++){
				if(e[h[i]][j]) e[i][j] = e[j][i] = 1;
			}
			break;
			case 2:
			e[h[i]][i] = e[i][h[i]] = 1;
			for(int j = 0; j < i; j++){
				if(e[h[i]][j]) e[i][j] = e[j][i] = 1;
			}
			break;			
		}
	}
	int ans = 0;
	for(int b = 0; b < (1<<n); b++){
		int lans = 0;
		for(int i = 0; i < n; i++){
			if(~b >> i & 1) continue;
			for(int j = 0; j < n; j++){
				if(~b >> j & 1) continue;
				if(e[i][j]) goto FAIL;
			}
		}
		for(int i = 0; i < n; i++){
			if(b >> i & 1){
				lans += c[i];
			}
		}
		ans = max(ans, lans);
		FAIL:
		continue;
	}
	return ans;
}

vector<int> G[100005];
int dp[100005][2];

void dfs(int x){
	dp[x][1] = c[x];
	for(int u : G[x]){
		dfs(u);
		dp[x][0] += max(dp[u][0], dp[u][1]);
		dp[x][1] += dp[u][0];
	}
}
int tree_dp(){
	for(int i = 1; i < n; i++) G[h[i]].push_back(i);
	dfs(0);
	return max(dp[0][0], dp[0][1]);
}

int findSample(int N, int C[], int H[], int P[]){
	n = N; 
	c = vector<int>(C,C+n);
	h = vector<int>(H,H+n);
	p = vector<int>(P,P+n);
	int uq;
	p[0] = p[1];
	if((uq = *min_element(all(p))) == *max_element(all(p))){
		switch(uq){
			case 0:
			return tree_dp();
			case 1:
			return accumulate(all(c), 0);
			case 2:
			return *max_element(all(c));
		}
	}
	if(n <= 10) return bf();
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 5 ms 2680 KB Output is correct
6 Correct 5 ms 2680 KB Output is correct
7 Correct 4 ms 2680 KB Output is correct
8 Correct 4 ms 2680 KB Output is correct
9 Correct 4 ms 2652 KB Output is correct
10 Correct 4 ms 2680 KB Output is correct
11 Correct 4 ms 2680 KB Output is correct
12 Correct 4 ms 2680 KB Output is correct
13 Correct 4 ms 2680 KB Output is correct
14 Correct 4 ms 2680 KB Output is correct
15 Correct 4 ms 2680 KB Output is correct
16 Correct 4 ms 2680 KB Output is correct
17 Correct 4 ms 2680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2652 KB Output is correct
5 Correct 4 ms 2680 KB Output is correct
6 Correct 4 ms 2680 KB Output is correct
7 Correct 4 ms 2680 KB Output is correct
8 Correct 4 ms 2680 KB Output is correct
9 Correct 4 ms 2680 KB Output is correct
10 Correct 3 ms 2680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 4 ms 2680 KB Output is correct
6 Correct 4 ms 2680 KB Output is correct
7 Correct 4 ms 2680 KB Output is correct
8 Correct 4 ms 2680 KB Output is correct
9 Correct 4 ms 2680 KB Output is correct
10 Correct 4 ms 2680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2684 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 5 ms 2680 KB Output is correct
4 Correct 4 ms 2680 KB Output is correct
5 Correct 5 ms 2808 KB Output is correct
6 Correct 5 ms 2680 KB Output is correct
7 Correct 4 ms 2680 KB Output is correct
8 Correct 5 ms 2808 KB Output is correct
9 Correct 4 ms 2680 KB Output is correct
10 Correct 4 ms 2680 KB Output is correct
11 Correct 5 ms 2680 KB Output is correct
12 Correct 5 ms 2680 KB Output is correct
13 Correct 5 ms 2808 KB Output is correct
14 Correct 5 ms 2808 KB Output is correct
15 Correct 5 ms 2808 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 4 ms 2728 KB Output is correct
5 Correct 4 ms 2680 KB Output is correct
6 Correct 4 ms 2680 KB Output is correct
7 Correct 4 ms 2680 KB Output is correct
8 Correct 4 ms 2680 KB Output is correct
9 Correct 4 ms 2812 KB Output is correct
10 Correct 5 ms 2680 KB Output is correct
11 Incorrect 5 ms 2680 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Correct 4 ms 2808 KB Output is correct
3 Correct 4 ms 2680 KB Output is correct
4 Correct 5 ms 2680 KB Output is correct
5 Correct 4 ms 2680 KB Output is correct
6 Correct 4 ms 2680 KB Output is correct
7 Correct 4 ms 2776 KB Output is correct
8 Correct 4 ms 2680 KB Output is correct
9 Correct 4 ms 2680 KB Output is correct
10 Correct 4 ms 2680 KB Output is correct
11 Correct 4 ms 2680 KB Output is correct
12 Incorrect 38 ms 4956 KB Output isn't correct
13 Halted 0 ms 0 KB -