Submission #1240367

#TimeUsernameProblemLanguageResultExecution timeMemory
1240367Hamed_GhaffariRarest Insects (IOI22_insects)C++20
0 / 100
0 ms416 KiB
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;

const int MXN = 2008;

bool del[MXN];
int mark[MXN], timer=1;

int min_cardinality(int n) {
    int dif=0;
    for(int i=0; i<n; i++) {
        move_inside(i);
        mark[i] = 1;
        if(press_button()==2) {
            move_outside(i);
            mark[i] = 0;
        }
        else dif++;
    }
    if(dif==1) return n;
    int l=1, r=n/dif+1, mid, cnt;
    while(r-l>1) {
        timer++;
        mid = (l+r)>>1;
        for(int i=0; i<n; i++) if(!mark[i] && !del[i]) {
            move_inside(i);
            mark[i] = timer;
            cnt++;
            if(cnt>mid && press_button()>mid) {
                move_outside(i);
                mark[i] = 0;
                cnt--;
            }
        }
        if(1ll*mid*dif==cnt)
            l = mid;
        else {
            r = mid;
            for(int i=0; i<n; i++)
                if(!mark[i])
                    del[i] = 1;
            for(int i=0; i<n; i++)
                if(mark[i]==timer)
                    move_outside(i),
                    mark[i] = 0,
                    cnt--;
        }
    }
    return l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...