제출 #1223860

#제출 시각아이디문제언어결과실행 시간메모리
1223860banganRarest Insects (IOI22_insects)C++20
0 / 100
30 ms436 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define pb push_back // mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int n; int unq; bool ok(int k) { vector<int> in; for (int i=0; i<n; i++) { move_inside(i); if (press_button() > k) move_outside(i); else in.pb(i); } bool ret = unq * k == in.size(); while (!in.empty()) { move_outside(in.back()); in.pop_back(); } return ret; } int min_cardinality(int N) { vector<int> in; for (int i = 0; i < N; i++) { move_inside(i); if (press_button() == 2) move_outside(i); else in.pb(i); } unq = in.size(); while (!in.empty()) { move_outside(in.back()); in.pop_back(); } if (unq <= 7) { vector<int> all; for (int i=0; i<N; i++) all.pb(i); int ans = N; while (!all.empty()) { vector<int> rem; int cur = 0; while (!all.empty()) { int i = all.back(); all.pop_back(); move_inside(i); int res = press_button(); if (res == cur) { move_outside(i); rem.pb(i); } else { in.pb(i); } cur = res; } ans = min(ans, cur); all = rem; while (!in.empty()) { move_outside(in.back()); in.pop_back(); } } return ans; } n = N; int l = 1, r = n / unq / 2 + 1; while (l != r) { int mid = (l+r+1) / 2; ok(mid) ? l = mid : r = mid - 1; } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...