Submission #1058359

#TimeUsernameProblemLanguageResultExecution timeMemory
1058359aykhnRarest Insects (IOI22_insects)C++17
99.89 / 100
40 ms704 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int min_cardinality(int N) { vector<int> ord(N, 0); iota(ord.begin(), ord.end(), 0); shuffle(ord.begin(), ord.end(), rng); int uni = 0; vector<int> v; for (int &i : ord) { move_inside(i); if (press_button() > 1) move_outside(i); else uni++, v.push_back(i); } vector<int> in(N, 0); vector<int> alive(N, 1); int cur = v.size(); for (int &i : v) alive[i] = 0; v.clear(); int l = 1, r = N / uni; while (l < r) { int mid = (l + r + 1) >> 1; for (int &i : ord) { if (!alive[i]) continue; move_inside(i); v.push_back(i); cur++; in[i] = 1; if (press_button() > mid) { cur--; in[i] = 0; move_outside(i); v.pop_back(); } } if (cur != mid * uni) { for (int i = 0; i < N; i++) { if (!in[i]) alive[i] = 0; } for (int &i : v) { cur--; move_outside(i), in[i] = 0; } v.clear(); r = mid - 1; } else { for (int &i : v) { alive[i] = 0; in[i] = 0; } v.clear(); l = mid; } } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...