제출 #582364

#제출 시각아이디문제언어결과실행 시간메모리
582364kamelfanger83친구 (IOI14_friend)C++17
컴파일 에러
0 ms0 KiB
#include <iostream> #include <vector> #include "friend.h" using namespace std; 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); } auto getmax = [&](auto&& self, int i){ int bo = 0; int bm = confidence[i]; for(int child : children[i]){ auto got = self(self, child); bo += got.first; bm += got.second; } bm = max(bm, bo); return {bm, bo}; }; return getmax(getmax, 0).first; } } /*int main(){ int confidence [6] = {13, 3, 6, 20, 10, 15}; int host [6] = {0, 0, 0, 1, 2, 0,}; int protocol [6] = {0, 0, 1, 2, 1, 0}; cout << findSample(6, confidence, host, protocol); }*/

컴파일 시 표준 에러 (stderr) 메시지

friend.cpp: In instantiation of 'findSample(int, int*, int*, int*)::<lambda(auto:1&&, int)> [with auto:1 = findSample(int, int*, int*, int*)::<lambda(auto:1&&, int)>&]':
friend.cpp:71:32:   required from here
friend.cpp:64:32: error: use of 'findSample(int, int*, int*, int*)::<lambda(auto:1&&, int)> [with auto:1 = findSample(int, int*, int*, int*)::<lambda(auto:1&&, int)>&]' before deduction of 'auto'
   64 |                 auto got = self(self, child);
      |                            ~~~~^~~~~~~~~~~~~
friend.cpp:69:27: error: returning initializer list
   69 |             return {bm, bo};
      |                           ^