Submission #111947

#TimeUsernameProblemLanguageResultExecution timeMemory
111947luciocfFriend (IOI14_friend)C++14
27 / 100
32 ms2680 KiB
#include <bits/stdc++.h>
#include "friend.h"

using namespace std;

bool mark[12][12];

int findSample(int n, int confidence[], int host[], int protocol[])
{
	if (n > 10)
	{
		if (protocol[1] == 2)
		{
			int mx = 0;
			for (int i = 0; i < n; i++)
				mx = max(mx, confidence[i]);
			return mx;
		}

		int s = 0;
		for (int i = 0; i < n; i++)
			s += confidence[i];

		return s;
	}

	for (int i = 1; i < n; i++)
	{
		int h = host[i];

		if (protocol[i] == 0)
		{
			mark[i][h] = mark[h][i] = 1;
		}
		else if (protocol[i] == 1)
		{
			for (int j = 0; j < n; j++)
				if (mark[h][j])
					mark[i][j] = mark[j][i] = 1;
		}
		else
		{
			for (int j = 0; j < n; j++)
				if (mark[h][j])
					mark[i][j] = mark[j][i] = 1;
			mark[i][h] = mark[h][i] = 1;
		}
	}

	int ans = 0;

	for (int mask = 0; mask < (1<<n); mask++)
	{
		bool ok = 1;
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				if (mark[i][j] && mask&(1<<i) && mask&(1<<j))
					ok = 0;

		if (ok)
		{
			int aux = 0;
			for (int i = 0; i < n; i++)
				if (mask&(1<<i))
					aux += confidence[i];
			ans = max(ans, aux);
		}
	}

	return ans;
}
#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...