제출 #1074640

#제출 시각아이디문제언어결과실행 시간메모리
1074640mindiyak친구 (IOI14_friend)C++14
27 / 100
16 ms2808 KiB
#include "friend.h" #include <iostream> #include <vector> #include <set> using namespace std; vector<set<int>> friends(1005); int findSample(int n,int confidence[],int host[],int protocol[]){ int type[3] = {0,0,0}; for(int i = 1;i<n;i++)type[protocol[i]]++; if(type[0] == 0 && type[2] == 0){ int ans = 0; for(int i = 0;i<n;i++)ans += confidence[i]; return ans; } if(type[0] == 0 && type[1] == 0){ int ans = 0; for(int i = 0;i<n;i++)ans = max(confidence[i],ans); return ans; } if(n<=10){ for(int i = 1;i<n;i++){ if(protocol[i] == 0){ friends[host[i]].insert(i); friends[i].insert(host[i]); }else if(protocol[i] == 1){ for(int a:friends[host[i]]){ friends[i].insert(a); friends[a].insert(i); } }else{ friends[host[i]].insert(i); friends[i].insert(host[i]); for(int a:friends[host[i]]){ friends[i].insert(a); friends[a].insert(i); } } } for(int i = 0;i<n;i++)if(friends[i].count(i))friends[i].erase(i); // for(int i = 0;i<n;i++){ // cerr << i << " -> "; // for(int a:friends[i])cerr << a << " "; // cerr << endl; // } int ans = 0; for(int k=1;k<(1<<n);k++){ bool can = 0; int temp = 0; cerr << k << " -> "; for(int j = 0;j<n;j++){ if(can)break; cerr << ((1<<j)&k); if((1<<j)&k)continue; temp += confidence[j]; for(int l = 0;l<n;l++){ if(can)break; if(j == l)continue; if((1<<l)&k)continue; if(friends[j].count(l) != 0){ can = 1; // cerr << "{" << j << "," << l << "} "; } } } // cerr << " " << can << " " << temp << endl; if(can == 0)ans = max(ans,temp); } return ans; } return -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...