Submission #942142

#TimeUsernameProblemLanguageResultExecution timeMemory
942142benjaminkleyn드문 곤충 (IOI22_insects)C++17
53.16 / 100
91 ms1108 KiB
#include <bits/stdc++.h> #include "insects.h" using namespace std; int cnt; bool inside[2000]; void init() { cnt = 0; memset(inside, 0, sizeof(inside)); } void move_in(int i) { if (inside[i]) return; cnt++; inside[i] = true; move_inside(i); } void move_out(int i) { if (!inside[i]) return; cnt--; inside[i] = false; move_outside(i); } int min_cardinality(int N) { init(); for (int i = 0; i < N; i++) { move_in(i); if (press_button() > 1) move_out(i); } int num_types = cnt; int lo = 1, hi = N / cnt + 1, mid; while (lo < hi) { mid = lo + (hi - lo + 1) / 2; vector<int> new_insects; for (int i = 0; i < N; i++) if (!inside[i]) { move_in(i); if (press_button() > mid) move_out(i); else new_insects.push_back(i); if (cnt == mid * num_types) break; } if (cnt == mid * num_types) lo = mid; else { for (int x : new_insects) move_out(x); hi = mid - 1; } } return lo; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...