Submission #627796

#TimeUsernameProblemLanguageResultExecution timeMemory
627796peti1234Rarest Insects (IOI22_insects)C++17
100 / 100
62 ms296 KiB
#include <bits/stdc++.h> using namespace std; #include "insects.h" const int c=2005; int cnt, si, ord[c]; bool v[c], fix[c]; int add(int a) { assert(!v[a]); v[a]=true; si++; move_inside(a); return press_button(); } void sub(int a) { assert(v[a]); v[a]=false; si--; move_outside(a); } int min_cardinality(int N) { for (int i=0; i<N; i++) { ord[i]=i; } random_shuffle(ord, ord+N); for (int i=0; i<N; i++) { if (add(i)==2) { sub(i); } else { cnt++; } } for (int i=0; i<N; i++) { if (v[i]) { fix[i]=1; } } int lo=1, hi=N/cnt+1, mid; while (hi-lo>1) { mid=(hi+lo)/2; for (int i=0; i<N; i++) { int pos=ord[i]; if (fix[pos] || si==cnt*mid) continue; if (add(pos)>mid) { sub(pos); } } if (si==cnt*mid) { lo=mid; for (int i=0; i<N; i++) { if (v[i]) { fix[i]=1; } } } else { hi=mid; for (int i=0; i<N; i++) { if (fix[i]) continue; if (!v[i]) fix[i]=1; else { sub(i); } } } } return lo; } /* int main() { return 0; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...