제출 #585070

#제출 시각아이디문제언어결과실행 시간메모리
585070Mazaalai친구 (IOI14_friend)C++17
27 / 100
25 ms1428 KiB
#include <bits/stdc++.h>
#include "friend.h"
#define LINE "------------\n"
#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) {
	friends[x].insert(y);
	friends[y].insert(x);
}
void MyFriendsAreYourFriends(int x, int y) {
	for (auto el : friends[y]) IAmYourFriend(el, x);
}
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[]){
	int ans = 0;
	if (n <= 10) {
		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++) 
		for (auto el : friends[i]) 
			isFriend[i][el] = 1;
		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);
		}
	} else if (type[1] == 0) {
		// cout << "A\n";

	} else if (type[1] == 1) {
		// cout << "B\n";
		for (int i = 0; i < n; i++) ans += nums[i];
	} else if (type[1] == 2) {
		// cout << "C\n";
		for (int i = 0; i < n; i++) ans = max(ans, nums[i]);
	}

	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...