#include "insects.h"
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define ff first
#define ss second
#define pb push_back
#define ll long long
#define ld long double
int n;
void clean(vector<int> &arr) {
for (int i: arr) {
move_outside(i);
}
arr.clear();
}
int min_cardinality(int N) {
int numtype = 0, size = 0, ansbuffer = 0;
n = N;
vector<int> curarr, banned;
for (int i=0;i<n;i++) {
move_inside(i);
numtype += 1;
curarr.pb(i);
if (press_button() > 1) {
move_outside(i);
numtype -= 1;
curarr.pop_back();
}
}
for (int i: curarr) banned.pb(i);
ansbuffer = 1;
clean(curarr);
int top = n, mid;
vector<int> temp;
while (top > 1) {
mid = top / 2;
if (mid * numtype > n - (int)banned.size()) {
top = mid;
continue;
}
for (int i=0;i<n;i++) {
if (banned[i]) continue;
move_inside(i);
curarr.pb(i);
if (press_button() > mid) {
move_outside(i);
temp.pb(i);
curarr.pop_back();
}
}
if (curarr.size() == numtype * mid) {
for (int i: curarr) banned.pb(i);
ansbuffer += mid;
top = top - mid;
} else {
top = mid;
for (int i: temp) banned.pb(i);
}
temp.clear();
clean(curarr);
}
return ansbuffer;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |