Submission #721517

#TimeUsernameProblemLanguageResultExecution timeMemory
721517buidangnguyen05Rarest Insects (IOI22_insects)C++17
25 / 100
342 ms688 KiB
#include "insects.h"
#include <bits/stdc++.h>

using namespace std;

const int N = 2e3 + 10;
bool inside[N];
set<int> items;
int n;

int min_cardinality(int _n) {
    n = _n;

    for (int i = 0; i < n; ++i) items.insert(i);

    int types = 0;
    for (int i = 0; i < n; ++i) {
        inside[i] = 1;
        move_inside(i);
        ++types;
        if (press_button() == 2) {
            inside[i] = 0;
            move_outside(i);
            --types;
        }
    }

    for (int i = 0; i < n; ++i) if (inside[i]) {
        inside[i] = 0;
        move_outside(i);
    }

    int res = -1;
    while (!~res) {
        int mid = items.size() / types;

        set<int> turn;

        int cnt = 0;
        for (int i : items) {
            if (!inside[i]) {
                inside[i] = 1;
                move_inside(i);

                turn.insert(i);

                if (press_button() > mid) {
                    inside[i] = 0;
                    move_outside(i);

                    turn.erase(i);
                }
            }
            cnt += inside[i];
        }

        if (cnt == types * mid) {
            res = mid;
            break;
        }
        else {
            set<int> nxt;
            for (int i : items) if (inside[i]) nxt.insert(i);
            for (int i : turn) {
                inside[i] = 0;
                move_outside(i);
            }
            items = nxt;
        }
    }

    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...