Submission #585045

#TimeUsernameProblemLanguageResultExecution timeMemory
585045MazaalaiFriend (IOI14_friend)C++17
0 / 100
1085 ms1392 KiB
#include <bits/stdc++.h>
#include "friend.h"
#define ALL(x) x.begin(),x.end()
#define LLA(x) x.rbegin(),x.rend()
#define pb push_back
using namespace std;
using PII = pair <int, int>;
using ll = long long;
// Find out best sample
/*  
0 for IAmYourFriend,
1 for MyFriendsAreYourFriends,
2 for WeAreYourFriends.
*/
const int N = 1e3 + 5;
set <int> friends[N];
void IAmYourFriend(int x, int y) {
	// cout << "IAmYourFriend: " << x << ' ' << y <<'\n';
	friends[x].insert(y);
}
void MyFriendsAreYourFriends(int x, int y) {
	// cout << "MyFriendsAreYourFriends: " << x << ' ' << y <<'\n';
	for (auto el : friends[y]) friends[x].insert(el);
}
void WeAreYourFriends(int x, int y) {
	MyFriendsAreYourFriends(x, y);
	IAmYourFriend(x, y);
}
bool isFriend[N][N];
int findSample(int n, int nums[], int host[], int type[]){
	for (int i = 1; i < n; i++) {
		if (type[i] == 0) IAmYourFriend(i, host[i]);
		else if (type[i] == 1) MyFriendsAreYourFriends(i, host[i]);
		else WeAreYourFriends(i, host[i]);
	}
	for (int i = 0; i < n; i++) {
		// cout << i << ": ";
		for (auto el : friends[i]) {
			// cout << el << ' ';
			isFriend[i][el] = 1;
		}
		// cout << "\n";
	}
	int ans = 0;
	for (int i = 0; i < (1<<n); i++) {
		vector <int> ids;
		for (int j = 0; j < n; j++) {
			if (i & (1<<j)) ids.pb(j);
		}
		bool no = 0;
		for (auto el : ids)
		for (auto el1 : ids) {
			no |= isFriend[el][el1];
		}
		if (no) continue;
		int sum = 0;
		for (auto el : ids) {
			// cout << el <<" ";
			sum += nums[el];
		}
		// cout << ": " << sum << '\n';
		ans = max(ans, sum);
	}
	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...