# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
908267 | 2024-01-16T10:43:37 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; vector<int> q; int ret; int cur; for(int a=0; a<N; a+=2){ q.push_back(a); } ret = run_diagnostic(q); if(ret == 1){ int t; q.clear(); for(int a=1; a<N; a+=2) q.push_back(a); for(int a=0; a<N; a+=2){ q.push_back(a); t = run_diagnostic(q); if(t != -1){ cur = a; them.push_back(a); break; } } for(int a=cur+2; a<N; a+=2){ q.pop_back(); q.push_back(a); if(run_diagnostic(q) != ret){ them.push_back(a); } } int k = them.size(); if(t == 0){ k--; } q.clear(); for(int a=0; a<k-1; a++){ q.push_back(them[a]); } q.push_back(0); for(int a=1; a<N; a+=2){ q.pop_back(); q.push_back(a); if(run_diagnostic(q) != -1) them.push_back(a); } } else{ assert(ret == 0) int t; for(int a=1; a<N; a+=2){ q.push_back(a); t = run_diagnostic(q); if(t != ret){ cur = a; them.push_back(a); break; } } for(int a=cur+2; a<N; a+=2){ q.pop_back(); q.push_back(a); if(run_diagnostic(q) != -1){ them.push_back(a); } } int k = them.size(); if(ret == 0 || t == 0){ k--; } q.clear(); for(int a=0; a<k-1; a++){ q.push_back(them[a]); } q.push_back(0); for(int a=0; a<N; a+=2){ q.pop_back(); q.push_back(a); if(run_diagnostic(q) != -1) them.push_back(a); } } sort(them.begin(), them.end(), greater<int>()); vector<int> r; 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; }