Submission #1235643

#TimeUsernameProblemLanguageResultExecution timeMemory
1235643Muhammad_Aneeq드문 곤충 (IOI22_insects)C++17
96.88 / 100
18 ms432 KiB
#include "insects.h" #include <vector> #include <bitset> #include <map> #include <set> #include <iostream> using namespace std; int const sz=2010; bitset<sz>ind,ind1,alw; bitset<sz>ver[sz]={}; int ask() { return press_button(); } int min_cardinality(int N) { int colors=0; for (int i=0;i<N;i++) { ind[i]=1; move_inside(i); colors++; if (ask()>1) { ind[i]=0; move_outside(i); colors--; } else alw[i]=1; } ver[1]=ind; set<int>s; s.insert(1); for (int i=0;i<N;i++) ind1[i]=1-ind[i]; int cnt=colors; int st=1,en=N/colors+1; while (st+1<en) { int mid=(st+en)/2; auto z=s.lower_bound(mid); z--; int pre=*z; // int cnt1=pre*colors; for (int i=0;i<N;i++) { if (ver[pre][i]==ind[i]) continue; if (ver[pre][i]) { move_inside(i); ind[i]=1; ind1[i]=0; cnt++; } else { if (ask()>mid) move_outside(i); ind[i]=0; ind1[i]=1; cnt--; } } for (int i=0;i<N;i++) { if (cnt==colors*mid) break; if (ind1[i]) { move_inside(i); ind[i]=1; cnt++; if (ask()>mid) { cnt--; move_outside(i); ind[i]=0; } } } if (cnt==colors*mid) { st=mid; if (st+1>=en) break; for (int i=0;i<N;i++) { if (ind[i]) ind1[i]=0; } } else { en=mid; if (st+1>=en) break; for (int i=0;i<N;i++) { if (ind[i]) continue; else ind1[i]=0; } } s.insert(mid); ver[mid]=ind; } return st; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...