Submission #643660

#TimeUsernameProblemLanguageResultExecution timeMemory
643660VanillaRarest Insects (IOI22_insects)C++17
47.50 / 100
259 ms512 KiB
#include <bits/stdc++.h> #include "insects.h" using namespace std; int min_cardinality(int n) { vector <bool> tr (n); int tp = 0; for (int i = 0; i < n; i++){ move_inside(i); if (press_button() == 2) { move_outside(i); } else { tr[i] = 1; tp++; } } for (int i = 0; i < n; i++) if (tr[i]) move_outside(i); int l = 0, r = n, rs = -1; int btn = 0; vector <int> in (n); while (l <= r){ int mid = (l + r) / 2; auto check = [&] (int x) -> bool { int ins = btn; vector <int> vis (n); for (int i = 0; i < n; i++){ if (in[i]) continue; move_inside(i); // cout << x << " " << i << " " << ins << " " << press_button() << "\n"; if (press_button() > x) { move_outside(i); } else { ins++; vis[i] = in[i] = 1; } } if (ins != x * tp) { for (int i = 0; i < n; i++) if (vis[i]) { in[i] = 0; move_outside(i); } return 0; } else { btn = ins; return 1; } // cout << x << " " << (x * tp == ins) << "\n"; // if (ins != x * tp) for (int i = 0; i < n; i++) if (vis[i]) move_outside(i); // return ins == x * tp; }; if (check(mid)) { rs = mid; l = mid + 1; } else { r = mid - 1; } } return rs; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...