Submission #1232103

#TimeUsernameProblemLanguageResultExecution timeMemory
1232103badge881드문 곤충 (IOI22_insects)C++20
25 / 100
98 ms420 KiB
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;

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.push_back(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.push_back(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.push_back(i);
                }
                else
                    in.push_back(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.push_back(i);

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