Submission #1168932

#TimeUsernameProblemLanguageResultExecution timeMemory
1168932anmattroiFriend (IOI14_friend)C++17
11 / 100
210 ms131072 KiB
#include "friend.h" #include <bits/stdc++.h> #define maxn 100005 using namespace std; int f[1024], s[1024]; vector<int> adj[maxn]; int findSample(int n, int confidence[], int host[], int protocol[]){ for (int i = 0; i < (1<<n); i++) f[i] = s[i] = 0; for (int i = 0; i < n; i++) adj[i].clear(); for (int i = 1; i < n; i++) { switch (protocol[i]) { case 0 : adj[host[i]].emplace_back(i); adj[i].emplace_back(host[i]); break; case 1 : for (int v : adj[host[i]]) { adj[v].emplace_back(i); adj[i].emplace_back(v); } break; default : for (int v : adj[host[i]]) { adj[v].emplace_back(i); adj[i].emplace_back(v); } adj[host[i]].emplace_back(i); adj[i].emplace_back(host[i]); } } for (int i = 0; i < n; i++) for (int j : adj[i]) { f[(1<<i)|(1<<j)] = 1; int mask = ((1<<i)|(1<<j)); } for (int i = 0; i < n; i++) for (int mask = 0; mask < (1<<n); mask++) if (mask>>i&1) f[mask] += f[mask^(1<<i)]; int ans = 0; for (int i = 1; i < (1<<n); i++) { s[i] = s[i-(i&-i)] + confidence[__lg(i&-i)]; f[i] ? 0 : ans = max(ans, s[i]); } return ans; } /* 6 13 3 6 20 10 15 0 0 0 1 1 2 2 1 0 0 */
#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...