Submission #1214207

#TimeUsernameProblemLanguageResultExecution timeMemory
1214207thangdz2k7Rarest Insects (IOI22_insects)C++20
53.16 / 100
50 ms424 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; int min_cardinality(int N){ vector <int> used(N, 0); int num = 0; auto add = [&](int i) -> void { if (used[i]) return; move_inside(i); num ++; used[i] = 1; }; auto del = [&](int i) -> void { if (!used[i]) return; move_outside(i); num --; used[i] = 0; }; auto qry = [&]() -> int { if (num == 1) return 1; return press_button(); }; for (int i = 0; i < N; ++ i){ add(i); if (qry() > 1) del(i); } if (num == 1) return N; if (num == N) return 1; int D = num; vector <int> valid = used; auto check = [&](int mid){ for (int i = 0; i < N; ++ i){ if (!used[i]){ add(i); if (qry() > mid) del(i); } } if (num == D * mid){ valid = used; return true; } for (int i = 0; i < N; ++ i) if (!valid[i]) del(i); return false; }; int low = 1, high = N / D; while (low < high){ int mid = (low + high + 1) >> 1; if (check(mid)) low = mid; else high = mid - 1; } return low; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...