Submission #641268

#TimeUsernameProblemLanguageResultExecution timeMemory
641268jamezzzRarest Insects (IOI22_insects)C++17
100 / 100
61 ms336 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; bool in[2005],bad[2005]; mt19937 rng(218); int min_cardinality(int N){ int types=0; for(int i=0;i<N;++i){ move_inside(i); in[i]=true; if(press_button()>1){ move_outside(i); in[i]=false; } else ++types; } int lo=2,hi=N/types,mid,res=1; vector<int> add; int tot=types; vector<int> index; for(int i=0;i<N;++i){ index.push_back(i); } while(lo<=hi){ mid=(lo+hi)>>1; add.clear(); vector<int> newbad; shuffle(index.begin(),index.end(),rng); for(int i:index){ if(in[i]||bad[i])continue; move_inside(i); in[i]=true; ++tot; if(press_button()>mid){ move_outside(i); in[i]=false; newbad.push_back(i); --tot; } else add.push_back(i); if(tot==mid*types)break; } if(tot==mid*types){ res=mid; lo=mid+1; } else{ hi=min(mid-1,tot/types); for(int i:add){ move_outside(i); in[i]=false; --tot; } for(int i:newbad){ bad[i]=true; } } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...