제출 #1226298

#제출 시각아이디문제언어결과실행 시간메모리
1226298chaeryeongCoreputer (IOI23_coreputer)C++20
100 / 100
0 ms408 KiB
#include "coreputer.h" #include <bits/stdc++.h> using namespace std; int Ask (vector <int> x) { vector <int> ret; for (int i = 0; i < (int)x.size(); i++) { if (x[i]) { ret.push_back(i); } } return run_diagnostic(ret); } vector <int> malfunctioning_cores (int n) { int l = 0, r = n - 1, p = -1, t = -1; int v = 0; int flag = 0; while (l < r) { int m = (l + r) / 2; vector <int> c(n, 0); for (int i = 0; i <= m; i++) { c[i] = 1; } v++; int s = Ask(c); if (s == -1) { l = m + 1; } else { r = m; t = s; } } if (t == -1) { t = 1; } assert(v <= 4); p = l; vector <int> ans(n, 0); ans[p] = 1; if (p == n - 1) { return ans; } int cnt = 0; for (int i = 0; i < p; i++) { vector <int> c(n, 0); for (int j = 0; j <= p; j++) { c[j] = 1; } c[i] = 0; if (Ask(c) != t) { ans[i] = 1; cnt++; } } if (t == 0) cnt++; for (int i = p + 1; i < n; i++) { if (cnt == 0) { break; } if (cnt == 1 && i == n - 1) { ans[i] = 1; continue; } vector <int> c(n, 0); for (int j = 0; j <= p; j++) { c[j] = 1; } if (t == 1) { c[p] = 0; } c[i] = 1; int z = Ask(c); if ((t == 1 && z != -1) || (t == 0 && z != 0)) { cnt--; ans[i] = 1; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...