Submission #1212304

#TimeUsernameProblemLanguageResultExecution timeMemory
1212304nerrrminRarest Insects (IOI22_insects)C++20
50 / 100
55 ms452 KiB
#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 (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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...