Submission #628104

#TimeUsernameProblemLanguageResultExecution timeMemory
628104I_love_Hoang_YenRarest Insects (IOI22_insects)C++17
0 / 100
0 ms208 KiB
#include "insects.h"
#include "bits/stdc++.h"

#define SZ(s) ((int) s.size())
using namespace std;

#ifndef RR
#define DEBUG(X)
#endif

int min_cardinality(int n) {
    // Step 1: Find a set of indices containing *unique* insects
    std::set<int> uniques;
    for (int i = 0; i < n; ++i) {
        move_inside(i);
        if (press_button() == 2) {
            // i appeared before -> remove it
            move_outside(i);
        } else {
            uniques.insert(i);
        }
    }
    // remove all insects from machine
    for (int i : uniques) {
        move_outside(i);
    }

    // Step 2: For each insect in `uniques`, count how many times it appears
    int res = n + 1;  // final result
    for (int x : uniques) {
        // count how many times x appears
        int cnt = 1;
        for (int i = 0; i < n; ++i) {
            if (i != x) {
                move_inside(i);
                if (press_button() != cnt) {
                    // different species -> remove
                    move_outside(i);
                } else {
                    // same species
                    ++cnt;
                }
            }
        }
        res = std::min(res, cnt);
        // remove all insects from machine
        for (int i = 0; i < n; ++i) {
            move_outside(i);
        }
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...