# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
908351 | 2024-01-16T11:25:32 Z | zyq181 | Coreputer (IOI23_coreputer) | C++17 | 0 ms | 0 KB |
#include "coreputer.h" #include <bits/stdc++.h> using namespace std; vector<int> malfunctioning_cores(int N){ vector<int> them; int lo = 0; int hi = N - 1; vector<int> q; bool flag = false; while(lo < hi){ int m = (lo + hi)/2; q.clear(); for(int a=0; a<=m; a++) q.push_back(a); int t = run_diagnostic(q); if(t == 0) flag = true; if(t == -1){ lo = m + 1; } else hi = m; } them.push_back(lo); if(lo == 0){ N--; } q.clear(); for(int a=0; a<=lo-1; a++) q.push_back(a); for(int a=lo+1; a<N; a++){ q.push_back(a); if(run_diagnostic(q) != -1) them.push_back(a); q.pop_back(); } int k = them.size(); if(flag){ k--; } q.clear(); for(int a=0; a<k-1; a++) q.push_back(them[a]); for(int a=0; a<=lo-2; a++) { q.push_back(a); if(run_diagnostic(a) != -1) them.push_back(a); q.pop_back(); } if(((int)them.size() % 2) == flag){ them.push_back((lo == 0) ? N-1 : lo - 1); } vector<int> r; sort(them.begin(), them.end(), greater<int>()); for(int a=0; a<N; a++){ if(them.back() == a){ r.push_back(1); them.pop_back(); } else{ r.push_back(0); } } return r; }