#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |