Submission #787158

#TimeUsernameProblemLanguageResultExecution timeMemory
787158alexander707070Rarest Insects (IOI22_insects)C++17
53.13 / 100
180 ms336 KiB
#include<bits/stdc++.h>
#include "insects.h"
#define MAXN 2007
using namespace std;
 
int n,cnt,ans,pt;
vector<int> diff,s,last;
int l[MAXN],r[MAXN],br[MAXN];
bool used[MAXN],in[MAXN];
vector< pair<int,int> > qr;
 
bool ok(int k){
    last.clear();

    for(int i=0;i<n;i++){
        if(used[i])continue;

        move_inside(i); cnt++;
        s.push_back(i); used[i]=true;

        last.push_back(i);

        if(press_button()>k){
            move_outside(i); cnt--;
            s.pop_back(); used[i]=false;
            last.pop_back();
        }
    }

    if(cnt==k*int(diff.size()))return true;
    else{
        for(int i:last){
            used[i]=false; move_outside(i);
            cnt--;
        }
        return false;
    }
}
 
int min_cardinality(int N){
    n=N;
 
    for(int i=0;i<n;i++){
        move_inside(i);
        diff.push_back(i);
 
        if(press_button()>1){
            move_outside(i);
            diff.pop_back();
        }
    }

    for(int i:diff)move_outside(i);

    int l=1,r=n/int(diff.size())+2,tt;

    while(l+1<r){
        tt=(l+r)/2;
        if(ok(tt)){
            l=tt;
        }else{
            r=tt;
        }
    }
    
    return l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...