Submission #867574

#TimeUsernameProblemLanguageResultExecution timeMemory
867574imarnRarest Insects (IOI22_insects)C++17
99.83 / 100
33 ms856 KiB
#include<bits/stdc++.h> #include "insects.h" #define f first #define s second #define pb push_back using namespace std; int siz[2001]{0}; int min_cardinality(int N) { vector<int>vec; int vis[2001]={0}; int use[2001]={0}; move_inside(0); int sz=0; for(int i=0;i<N;i++)siz[i]=1; for(int i=0;i<N;i++){ if(vis[i])continue; move_inside(i); if(press_button()==1){ vis[i]=1;sz++;vec.pb(i); } else move_outside(i); } int l=1,r=N/sz+1; int mx=sz; int ans=1; while(l<r){ int m=(l+r+1)>>1; int cnt=0; for(int i=0;i<N;i++){ if(cnt==mx*(m-ans))break; if(!vis[i]){ move_inside(i); if(press_button()<=m)cnt++,use[i]=1; else move_outside(i),vis[i]=1,use[i]=1; } } if(cnt==mx*(m-ans)){ l=m;ans=m; for(int i=0;i<N;i++)if(use[i]&&!vis[i])vis[i]=!vis[i],use[i]=0; for(int i=0;i<N;i++)if(vis[i]&&use[i])vis[i]=!vis[i]; } else { r=m-1; for(int i=0;i<N;i++)if(use[i]&&!vis[i])move_outside(i); }memset(use,0,sizeof use); }return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...