Submission #1232457

#TimeUsernameProblemLanguageResultExecution timeMemory
1232457inesfiRarest Insects (IOI22_insects)C++20
99.89 / 100
27 ms428 KiB
#include "insects.h"
#include<bits/stdc++.h>
using namespace std;

// void move_inside(int i)
// void move_outside(int i)
// int press_button()

const int TAILLEMAXI=2002;
int prenable[TAILLEMAXI];
int deja[TAILLEMAXI];
int nbgroupes;

int min_cardinality(int N) {
    fill(prenable, prenable + TAILLEMAXI, 0);
    fill(deja, deja + TAILLEMAXI, 0);
    nbgroupes = 0;

    for (int i=0;i<N;i++){
        move_inside(i);
        cerr << "in " << i << endl;
        if (nbgroupes==0 or press_button()==1){
            prenable[i]=1;
            nbgroupes++;
            deja[i]=1;
        }
        else {
            move_outside(i);
            cerr << "out " << i << endl;
        }
    }
    int nbdedans=nbgroupes;
    int g=1,d=N/nbgroupes;
    while (g<d){
        int m=(g+d+1)/2;
        for (int i=0;i<N;i++){
            if (prenable[i]==0 and deja[i]==0){
                move_inside(i);
                cerr << "in " << i << endl;

                if (press_button()>m){
                    move_outside(i);
                    cerr << "out " << i << endl;
                }
                else {
                    deja[i]=1;
                    nbdedans++;
                }
            }
        }
        cerr << nbdedans << " " << nbgroupes << " " << m << " ";
        if (nbdedans==m*nbgroupes){
            cerr << "lft" << endl;
            g=m;
            for (int i=0;i<N;i++){
                if (deja[i]==1){
                    prenable[i]=1;
                }
            }
        }
        else {
            cerr << "rgt" << endl;
            d=m-1;
            for (int i=0;i<N;i++){
                if (deja[i]==0) prenable[i] = 1;
            }

            for (int i=0;i<N;i++){
                if (deja[i]==1 and prenable[i]==0){
                    move_outside(i);
                    cerr << "out " << i << endl;
                    deja[i]=0;
                    nbdedans--;
                }
            }
        }
    }
    return g;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...