Submission #960367

#TimeUsernameProblemLanguageResultExecution timeMemory
960367ALTAKEXECoreputer (IOI23_coreputer)C++17
20 / 100
1 ms596 KiB
#include <bits/stdc++.h> using namespace std; int run_diagnostic(std::vector<int> T); vector<int> malfunctioning_cores(int n) { int l = 0, r = n - 1, mid = 0, best = n - 1; while (l <= r) { mid = (l + r) / 2; vector<int> v; for (int x = 0; x <= mid; x++) v.push_back(x); int hold = run_diagnostic(v); if (hold == 1 || hold == 0) { best = mid; r = mid - 1; } else l = mid + 1; } set<int> st; for (int x = best; x < n; x++) { vector<int> v; for (int y = 0; y <= x; y++) { if (st.find(y) != st.end()) continue; v.push_back(y); } int hold = run_diagnostic(v); if (hold == 1 || hold == 0) st.insert(x); } set<int> st1; int best2 = n; if (st.size() % 2 == 0) { best2 = *st.begin(); st1.insert(*st.begin()); st.erase(st.begin()); st1.insert(*st.begin()); st.erase(st.begin()); } else { best2 = *st.begin(); st1.insert(*st.begin()); st.erase(st.begin()); } for (int x = best2 - 1; x >= 0; x--) { vector<int> v; for (int y = n - 1; y >= x; y--) { if (st1.find(y) != st1.end()) continue; v.push_back(y); } int hold = run_diagnostic(v); if (hold == 1 || hold == 0) { st1.insert(x); } } for (auto it : st1) st.insert(it); vector<int> ans; for (int x = 0; x < n; x++) { if (st.find(x) == st.end()) ans.push_back(0); else ans.push_back(1); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...