Submission #859269

#TimeUsernameProblemLanguageResultExecution timeMemory
859269thinknoexitRarest Insects (IOI22_insects)C++17
53.16 / 100
104 ms852 KiB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;
using ll = long long;
int in[2020];
int min_cardinality(int n) {
    int type = 0;
    for (int i = 0;i < n;i++) {
        move_inside(i);
        if (press_button() == 2) {
            move_outside(i);
        }
        else in[i] = 1, type++;
    }
    // for (int i = 0;i < n;i++) {
    //     if (!in[i]) move_inside(i), in[i] = 2;
    // }
    // int mxtype = press_button();
    // for (int i = 0;i < n;i++) if (in[i] == 2) move_outside(i), in[i] = 0;
    if (type == 1) return n;
    int mxans = n / type;
    int l = 1, r = mxans;
    while (l < r) {
        int mid = (l + r + 1) / 2;
        int sz = mid - l;
        int cnt = 0;
        for (int i = 0;i < n;i++) {
            if (in[i]) continue;
            move_inside(i);
            if (press_button() > mid) {
                move_outside(i);
            }
            else in[i] = mid, cnt++;
        }
        if (cnt < type * sz) {
            r = mid - 1;
            for (int i = 0;i < n;i++) if (in[i] == mid) move_outside(i), in[i] = 0;
        }
        else l = mid;
    }
    return l;

    // n , n , n
    /*
        ans <= n / type
        ans <= n - mx
    */
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...