제출 #1232181

#제출 시각아이디문제언어결과실행 시간메모리
1232181inesfi드문 곤충 (IOI22_insects)C++20
10 / 100
96 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;
bool trouve[TAILLEMAXI];
int cb[TAILLEMAXI];
vector<int> diff;

int min_cardinality(int N) {
    trouve[0]=true;
    move_inside(0);
    int nbdiff=1;
    cb[0]=1;
    diff.push_back(0);
    for (int i=1;i<N;i++){
        move_inside(i);
        int nouv=press_button();
        if (nouv==1){
            nbdiff++;
            trouve[i]=1;
            cb[i]=1;
            diff.push_back(i);
        }
        else {
            move_outside(i);
        }
    }
    for (auto i:diff){
        move_outside(i);
    }
    /*for (auto i:diff){
        cout<<i<<" ";
    }
    cout<<endl;
    cout<<nbdiff<<endl;*/
    //return 0;
    //cout<<press_button()<<endl;
    for (int i=0;i<N;i++){
        if (trouve[i]==false){
            //cout<<i<<endl;
            //cout<<press_button()<<endl;
            move_inside(i);
            int indice=0;
            bool ok=false;
            //cout<<i<<endl;
            while (ok==false){
                move_inside(diff[indice]);
                //cout<<press_button()<<endl;
                if (press_button()!=1){
                    cb[diff[indice]]++;
                    //cout<<diff[indice]<<endl;
                    ok=true;
                }
                move_outside(diff[indice]);
                indice++;
            }
            move_outside(i);
            trouve[i]=true;
        }
    }
    int rep=1000*1000;
    for (auto i:diff){
        rep=min(rep,cb[i]);
        //cout<<cb[i]<<" ";
    }
    //cout<<endl;
    //cout<<rep<<endl;
    return rep;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...