Submission #582376

#TimeUsernameProblemLanguageResultExecution timeMemory
582376kamelfanger83Friend (IOI14_friend)C++17
46 / 100
31 ms1428 KiB
#include <iostream> #include <vector> #include "friend.h" using namespace std; pair<int, int> getmax(int i, vector<vector<int>>& children, int* confidence){ int bo = 0; int bm = confidence[i]; for(int child : children[i]){ pair<int, int> got = getmax(child, children, confidence); bo += got.first; bm += got.second; } bm = max(bm, bo); return make_pair(bm, bo); } int findSample(int n, int confidence[], int host[], int protocol[]){ if(n <= 10){ vector<vector<bool>> cons (n, vector<bool> (n, false)); for(int hoster = 1; hoster < n; hoster++){ if(protocol[hoster] == 0){ cons[hoster][host[hoster]] = true; cons[host[hoster]][hoster] = true; } else if(protocol[hoster] == 1){ for(int friender = 0; friender < n; friender++){ if(cons[host[hoster]][friender]) cons[friender][hoster] = cons[hoster][friender] = true; } } else { for(int friender = 0; friender < n; friender++){ if(cons[host[hoster]][friender]) cons[friender][hoster] = cons[hoster][friender] = true; } cons[hoster][host[hoster]] = true; cons[host[hoster]][hoster] = true; } } int best = 0; for(int bitmask = 0; bitmask < (1 << n); bitmask++){ int summ = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ if(cons[i][j] && ((bitmask & (1 << i)) != 0) && ((bitmask & (1 << j)) != 0)) goto no; } } for(int summer = 0; summer < n; summer++){ summ += confidence[summer] * ((bitmask & (1 << summer)) != 0); } best = max(best, summ); no: ; } return best; } if(protocol[1] == 1){ int summ = 0; for(int summer = 0; summer < n; summer++) summ += confidence[summer]; return summ; } if(protocol[1] == 2){ int maxx = 0; for(int maxxer = 0; maxxer < n; maxxer++) maxx = max(maxx, confidence[maxxer]); return maxx; } if(protocol[1] == 0){ vector<vector<int>> children (n); for(int hoster = 1; hoster < n; hoster++){ children[host[hoster]].push_back(hoster); } return getmax(0, children, confidence).first; } return 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...