Submission #686438

#TimeUsernameProblemLanguageResultExecution timeMemory
68643879brueRarest Insects (IOI22_insects)C++17
47.51 / 100
197 ms420 KiB
#include "insects.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int n, k;
vector<int> vec;
bool isFirst[2002], inside[2002];

int min_cardinality(int N){
    n = N;

    /// 종류 알아내기
    for(int i=0; i<n; i++){
        move_inside(i);
        if(press_button() == 2) move_outside(i);
        else vec.push_back(i), isFirst[i] = 1, inside[i] = 1;
    }
    k = (int)vec.size();

    int l = 2, r = N/k, ans = 1;
    while(l<=r){
        int m = (l+r)>>1;
        vector<int> removal;
        for(int i=0; i<n; i++){
            if(inside[i]) continue;
            move_inside(i);
            if(press_button() <= m) removal.push_back(i);
            else move_outside(i);
        }
        if((int)removal.size() == k * (m-1)) ans = m, l = m+1;
        else r = m-1;
        for(auto x: removal) move_outside(x);
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...