제출 #585065

#제출 시각아이디문제언어결과실행 시간메모리
585065Mazaalai친구 (IOI14_friend)C++17
11 / 100
25 ms2680 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[0] == 0) { } else if (type[1] == 1) { for (int i = 0; i < n; i++) ans += nums[i]; } else if (type[2] == 2) { 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...