제출 #847456

#제출 시각아이디문제언어결과실행 시간메모리
847456NeroZein드문 곤충 (IOI22_insects)C++17
95.35 / 100
40 ms596 KiB
#include "insects.h" #include "bits/stdc++.h" using namespace std; int min_cardinality(int N) { int distinct = 0; vector<bool> bad(N); vector<bool> inserted(N); for (int i = 0; i < N; ++i) { move_inside(i); int most_freq = press_button(); if (most_freq > 1) { move_outside(i); } else { inserted[i] = true; bad[i] = true; distinct++; } } int l = 1, r = N / distinct; while (l < r) { int mid = (l + r + 1) / 2; int cnt = accumulate(inserted.begin(), inserted.end(), 0); for (int i = 0; i < N; ++i) { if (bad[i]) { continue; } move_inside(i); int most_freq = press_button(); if (most_freq > mid) { move_outside(i); } else { move_inside(i); inserted[i] = true; cnt++; } } if (cnt == distinct * mid) {//inserted indices must not be removed under any condition l = mid; for (int i = 0; i < N; ++i) { if (inserted[i]) { bad[i] = true; } } } else {//non-inserted indices must not be inserted under any condition r = mid - 1; for (int i = 0; i < N; ++i) { if (!inserted[i]) { bad[i] = true; } else if (!bad[i]) { inserted[i] = false; move_outside(i); } } } } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...