# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
913960 | 2024-01-20T16:20:34 Z | LCJLY | 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) { int l=0; int r=n-1; int mid; int 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>se; for(int x=best;x<n;x++){ vector<int>v; for(int y=0;y<=x;y++){ if(se.find(y)!=se.end()) continue; v.push_back(y); } int hold=run_diagnostic(v); if(hold==1||hold==0){ se.insert(x); } } set<int>se2; best2=*se.begin(); se2.insert(*se.begin()); se.erase(se.begin()); se2.insert(*se.begin()); se.erase(se.begin()); for(int x=best2-1;x>=0;x--){ vector<int>v; for(int y=n-1;y>=x;y--){ if(se2.find(y)!=se2.end()) continue; v.push_back(y); } int hold=run_diagnostic(v); if(hold==1||hold==0){ se2.insert(x); } } for(auto it:se2) se.insert(it); vector<int>ans; for(int x=0;x<n;x++){ if(se.find(x)==se.end()) ans.push_back(0); else ans.push_back(1); } return ans; } //code