Submission #634213

#TimeUsernameProblemLanguageResultExecution timeMemory
634213flappybirdRarest Insects (IOI22_insects)C++17
100 / 100
70 ms432 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define MAX 2020 int chk[MAX]; int num[MAX]; int rnd[MAX]; int min_cardinality(int N) { int K; K = 0; int i; for (i = 0; i < N; i++) rnd[i] = i; for (i = N - 1; i >= 0; i--) swap(rnd[i], rnd[rand() % (i + 1)]); int on = 0; for (i = 0; i < N; i++) { move_inside(rnd[i]); if (press_button() > 1) move_outside(rnd[i]); else num[i] = 1, chk[i] = 1, on++; } int l, r; K = on; l = 1, r = N / K + 1; while (r - l > 1) { int mid = (l + r) / 2; vector<int> nb; for (i = 0; i < N; i++) { if (!chk[i] && !num[i]) { move_inside(rnd[i]); if (press_button() > mid) { nb.push_back(i); move_outside(rnd[i]); } else { chk[i] = 1; on++; } } if (on == mid * K) break; } if (on == mid * K) { for (i = 0; i < N; i++) if (chk[i]) num[i] = 1; l = mid; } else { for (auto v : nb) num[v] = -1; for (i = 0; i < N; i++) if (chk[i] && !num[i]) chk[i] = 0, move_outside(rnd[i]), on--; r = mid; } } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...