Submission #1226284

#TimeUsernameProblemLanguageResultExecution timeMemory
1226284chaeryeongCoreputer (IOI23_coreputer)C++20
0 / 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; while (l <= r) { int m = (l + r) / 2; vector <int> c(n, 0); for (int i = 0; i <= m; i++) { c[i] = 1; } int s = Ask(c); if (s == 1) { l = m + 1; } else { r = m - 1; p = m; t = s; } } assert(p != -1); vector <int> ans(n, 0); ans[p] = 1; 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++; } } for (int i = p + 1; i < n; i++) { if (cnt == 1) { int l = i, r = n - 1; while (l < r) { int m = (l + r) / 2; vector <int> c = ans; for (int j = l; j <= m; j++) { c[j] = 1; } if (Ask(c) == t) { l = m + 1; } else { r = m; } } cnt--; ans[l] = 1; break; } vector <int> c = ans; c[i] = 1; if (Ask(c) != t) { cnt--; ans[i] = 1; } } for (auto &i : ans) { i = 1 - i; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...