Submission #832697

#TimeUsernameProblemLanguageResultExecution timeMemory
832697Username4132Rarest Insects (IOI22_insects)C++17
99.56 / 100
64 ms440 KiB
#include "insects.h"
#include<iostream>
#include<vector>
using namespace std;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
#define PB push_back

int solve(vector<int> v, int k){
  int sz = (int)v.size();
  if(sz < k) return 0;
  int x = (sz+k)/(2*k);
  vector<int> us, nus;
  for(int el:v){
    move_inside(el);
    int ret = press_button();
    if(ret > x) move_outside(el), nus.PB(el);
    else us.PB(el);
  }
  for(int el:us) move_outside(el);
  if((int)us.size() == k*x) return x + solve(nus, k);
  else return solve(us, k);
}

int min_cardinality(int N) {
  vector<int> v;
  forn(i, N){
    move_inside(i);
    if(press_button() > 1) move_outside(i);
    else v.PB(i);
  }
  int sz = (int)v.size();
  for(int el:v) move_outside(el);
  vector<int> al(N);
  forn(i, N) al[i]=i;
  return solve(al, sz);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...