Submission #1176782

#TimeUsernameProblemLanguageResultExecution timeMemory
1176782SulARarest Insects (IOI22_insects)C++20
10 / 100
97 ms408 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include "insects.h"
#define all(a) a.begin(), a.end()
using namespace std;
using namespace __gnu_pbds;

//int FRQ[10000];
//int a[10000];
//
//void move_inside(int i) {
//    FRQ[a[i]]++;
//    cout << "ADDED " << i << endl;
//}
//void move_outside(int i) {
//    FRQ[a[i]]--;
//    cout << "REMOVED " << i << endl;
//
//}
//int press_button() {
//    cout << "ANSWER " << *max_element(FRQ, FRQ + 10000) << endl;
//    return *max_element(FRQ, FRQ + 10000);
//}

int min_cardinality(int n) {
    int frq[n+1]{}, a[n]{};
    int val = 0;
    for (int i = 0; i < n; i++) {
        move_inside(i);
        for (int j = 0; j < i; j++) {
            move_inside(j);
            if (press_button() == 2) {
                a[i] = a[j];
                move_outside(j);
                break;
            }
            move_outside(j);
        }
        if (a[i] == 0) {
            a[i] = ++val;
        }
        frq[a[i]] += 1;
        move_outside(i);
    }
    int ans = n;
    for (int i = 1; i <= n; i++) if (frq[i] > 0)
        ans = min(ans, frq[i]);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...