Submission #914056

#TimeUsernameProblemLanguageResultExecution timeMemory
914056LCJLYCoreputer (IOI23_coreputer)C++17
100 / 100
1 ms592 KiB
#include "coreputer.h" #include <bits/stdc++.h> using namespace std; vector<int>malfunctioning_cores(int n) { int l=0; int r=n-2; int mid; int best=n-1; bool even=false; 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){ if(hold==0) even=true; best=mid; r=mid-1; } else l=mid+1; } if(best==0){ vector<int>hayden; if(even){ l=0; r=n-1; int best2=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){ r=mid-1; best2=mid; } else l=mid+1; } for(int x=0;x<n;x++){ if(x==0||x==best2) hayden.push_back(1); else hayden.push_back(0); } } else{ hayden.push_back(1); for(int x=1;x<n;x++) hayden.push_back(0); } return hayden; } set<int>se; se.insert(best); for(int x=best+1;x<n;x++){ vector<int>v; if(x==n-1&&se.empty()){ se.insert(n-1); continue; } 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==0) even=true; if(hold==1||hold==0){ se.insert(x); } } int best2=n; set<int>se2; if(even){ best2=*se.begin(); se2.insert(*se.begin()); se.erase(se.begin()); se2.insert(*se.begin()); se.erase(se.begin()); } else{ best2=*se.begin(); se2.insert(*se.begin()); } for(int x=best2-1;x>=1;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); if(!even&&se.size()%2==0) se.insert(0); if(even&&se.size()%2==1) se.insert(0); 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...