Submission #721496

#TimeUsernameProblemLanguageResultExecution timeMemory
721496buidangnguyen05Rarest Insects (IOI22_insects)C++17
47.50 / 100
206 ms528 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; const int N = 2e3 + 10; bool inside[N]; set<int> items; int n; int min_cardinality(int _n) { n = _n; for (int i = 0; i < n; ++i) items.insert(i); int types = 0; for (int i = 0; i < n; ++i) { inside[i] = 1; move_inside(i); ++types; if (press_button() == 2) { inside[i] = 0; move_outside(i); --types; } } for (int i = 0; i < n; ++i) if (inside[i]) { inside[i] = 0; move_outside(i); } int L = 1, R = n / types, res = 1; while (L <= R) { int mid = (L + R) >> 1; set<int> turn; int cnt = 0; for (int i : items) { if (!inside[i]) { inside[i] = 1; move_inside(i); turn.insert(i); } cnt += inside[i]; if (press_button() > mid) { inside[i] = 0; move_outside(i); --cnt; turn.erase(i); } } if (cnt == types * mid) { res = mid; L = mid + 1; } else { set<int> nxt; for (int i : items) if (inside[i]) nxt.insert(i); for (int i : turn) { inside[i] = 0; move_outside(i); } items = nxt; R = mid - 1; } } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...