Submission #658789

#TimeUsernameProblemLanguageResultExecution timeMemory
658789pere_gilRarest Insects (IOI22_insects)C++17
0 / 100
42 ms296 KiB
#include "insects.h" #include "bits/stdc++.h" using namespace std; bool in[2005],bad[2005]; int tot_in,dif; bool check(int n, int x){ vector<int> act,out; for(int i=0;i<n;i++){ if(in[i] || bad[i]) continue; move_inside(i); if(press_button()>x) out.push_back(i); else act.push_back(i); if(tot_in+(int)act.size()==dif*x) break; } if(tot_in+(int)act.size()==dif*x){ tot_in+=act.size(); for(int i: act) in[i]=true; return true; } for(int i: out) bad[i]=true; return false; } int min_cardinality(int n) { memset(in,false,sizeof in); memset(bad,false,sizeof bad); tot_in=0; for(int i=0;i<n;i++){ move_inside(i); if(press_button()>1) move_outside(i); else{ in[i]=true; tot_in++; } } dif=tot_in; if(dif==1) return n; int l=1,r=n/dif+1; while(l+1<r){ int med=(l+r)/2; if(check(n,med)) l=med; else r=med; } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...