#include "insects.h"
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
int n;
int cnt;
int use[5000];
vector < int > fosure;
bool check(int x)
{
vector < int > g;
int put = fosure.size();
for (int i = 0; i < n; ++ i)
{
if(!use[i])continue;
g.pb(i);
move_inside(i);
if(press_button() > x)
{
move_outside(i);
g.pop_back();
}
else put ++;
}
if(put == cnt * x)
{
for (auto x: g)
{
fosure.pb(x);
use[x] = 0;
}
}
else
{
for (int i = 0; i < n; ++ i)
use[i] = 0;
for (auto x: g)
use[x] = 1;
for (auto x: g)
move_outside(x);
}
return (put == cnt * x);
}
int min_cardinality(int N)
{
n = N;
for (int i = 0; i < n; ++ i)
use[i] = 1;
vector < int > g;
for (int i = 0; i < n; ++ i)
{
g.pb(i);
move_inside(i);
if(press_button() == 2)
{
move_outside(i);
g.pop_back();
}
}
cnt = g.size();
for (auto x: g)
move_outside(x);
int l = 0, r = n/cnt, mid, ans;
while(l <= r)
{
int mid = (l + r)/2;
if(check(mid))
{
ans = mid; l = mid + 1;
}
else r = mid - 1;
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |