제출 #1223777

#제출 시각아이디문제언어결과실행 시간메모리
1223777bangan드문 곤충 (IOI22_insects)C++20
0 / 100
99 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());

const int C = 30;

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);
    }

    int k = in.size();
    for (int i : in) {
        move_outside(i);
    }
    in.clear();

    if (k <= C) {
        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;

            for (int IN : in) move_outside(IN);
            in.clear();
        }
        return ans;
    }
    else {
        int ans = 0;
        vector<int> all;
        for (int i=0; i<N; i++) all.pb(i);
    
        while (true) {
            for (int i : all) {
                move_inside(i);
                if (press_button() == 2) move_outside(i);
                else in.pb(i);
            }
            if (in.size() != k) return ans;
            ans++;
            for (int i : in) move_outside(i);
            in.clear();
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...