Submission #115769

#TimeUsernameProblemLanguageResultExecution timeMemory
115769thecodingwizardFriend (IOI14_friend)C++11
27 / 100
30 ms1528 KiB
#include <bits/stdc++.h> #include "friend.h" using namespace std; #define FOR(a, b, c) for (int a = b; a < c; a++) #define ll long long #define vi vector<int> #define pb push_back #define mp make_pair // Find out best sample int findSample(int n, int confidence[], int host[], int protocol[]) { if (n <= 10) { // Subtask 1 set<int> friends[n]; FOR(i, 1, n) { int h = host[i], p = protocol[i]; if (p == 0) { // IAmYourFriend friends[i].insert(h); friends[h].insert(i); } else if (p == 1) { // MyFriendsAreYourFriends for (int u : friends[h]) { friends[u].insert(i); friends[i].insert(u); } } else { // WeAreYourFriends friends[i].insert(h); friends[h].insert(i); for (int u : friends[h]) { friends[u].insert(i); friends[i].insert(u); } } } int ans = 0; for (int i = 0; i < (1 << n); i++) { int curAns = 0; bool invalid = false; for (int j = 0; j < n; j++) { if (!(i & (1 << j))) continue; for (int f : friends[j]) { if (f == j) continue; if (i & (1 << f)) { invalid = true; break; } } if (invalid) break; curAns += confidence[j]; } if (!invalid) ans = max(ans, curAns); } return ans; } else { bool isSubtaskTwo = true; for (int i = 1; i < n; i++) { if (protocol[i] != 1) isSubtaskTwo = false; } if (isSubtaskTwo) { // Subtask two: Sum all confidence values int ans = 0; for (int i = 0; i < n; i++) ans += confidence[i]; return ans; } // Subtask Three: We Are Your Friends, entire graph is connected int ans = 0; for (int i = 0; i < n; i++) ans = max(ans, confidence[i]); return ans; } exit(1); }
#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...