Submission #909860

#TimeUsernameProblemLanguageResultExecution timeMemory
909860MinhAnhndCoreputer (IOI23_coreputer)C++17
100 / 100
1 ms504 KiB
#include "coreputer.h" #include <bits/stdc++.h> using namespace std; std::vector<int> cut(int N, std::vector<int> m){ std::vector<int> output; int maxi = -1; for (auto i:m){ if (maxi>=i) continue; maxi = i; if((i<N) && (i>=0)){ output.push_back(i); } } //for (auto i:output){cout<<i;} //cout<<endl;2 return output; } std::vector<int> cuttee(int N, std::vector<int> m,int yes){ std::vector<int> output; int maxi = -1; for (auto i:m){ if (maxi>=i) continue; maxi = i; if((i<N) && (i>=0)){ output.push_back(i); } } if (yes<N) output.push_back(yes); //for (auto i:output){cout<<i;} //cout<<endl;2 return output; } std::vector<int> cutter(int N, std::vector<int> m,int no){ std::vector<int> output; int maxi = -1; for (auto i:m){ if (maxi>=i) continue; maxi = i; if((i<N) && (i>=0) && (i!=no)){ output.push_back(i); } } //for (auto i:output){cout<<i;} //cout<<endl; return output; } std::vector<int> malfunctioning_cores(int N) { long delta = 0; long delta2 = 0; vector<int> a; vector<int> larger; vector<int> smaller; vector<int> b; for (int i = 0;i<=min(7,N-1);i++){ a.push_back(i); } int half = run_diagnostic(a); int state = abs(half); a.clear(); if (half == 1){ for (int i = 0;i<=min(7,N-1);i++){ larger.push_back(i); } } else{ for (int i = 8;i<=min(15,N-1);i++){ delta = 8; delta2 = -8; larger.push_back(i); } } int fourth = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+4))); int eight; int onesix; int pos; if(state==fourth){ eight = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+2))); if(eight==state){ onesix = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+1))); pos = 2; if(onesix==state){ pos = 1; } } else{ onesix = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+3))); pos = 4; if(onesix==state){ pos = 3; } } } else{ eight = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+6))); if(eight==state){ onesix = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+5))); pos = 6; if(onesix==state){ pos = 5; } } else{ onesix = run_diagnostic(cut(N,vector<int>(larger.begin(), larger.begin()+7))); pos = 8; if(onesix==state){ pos = 7; } } } for (int i = 0;i<=N-1;i++){ b.push_back(0); } b[delta+pos-1] = 1; long ileft = 1; long illeft = 0; long total = 0; for (int i = pos+1;i<=8;i++){ vector<int> funnyright = vector<int>(larger.begin(), larger.begin()+pos-1); funnyright.push_back(larger[i-1]); int temp = run_diagnostic(cut(N,funnyright)); if(temp==state) {b[delta+i-1] = 1;ileft++;} } vector<int> funnyright = vector<int>(larger.begin(), larger.begin()+pos); for (int i = 0;i<pos-1;i++){ int temp = run_diagnostic(cutter(N,funnyright,larger[i])); if(temp!=state) {b[delta+i] = 1;ileft++;illeft++;} } if (state==0) total = illeft*2 + 2; else if ((fourth==0)||(eight==0)||(onesix==0)){ total = illeft*2; } else{ total = illeft*2 + 1; } //total = total/2; vector<int> funnyleft = vector<int>(larger.begin(), larger.begin()+pos-1); for (int i = 8;i<=14;i++){ int temp = run_diagnostic(cuttee(N,funnyleft,i+delta2)); if(temp==state) {b[i+delta2] = 1;ileft++;} } if((ileft<total)) b[15+delta2]=1; return b; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...