Submission #956911

#TimeUsernameProblemLanguageResultExecution timeMemory
956911n1kRarest Insects (IOI22_insects)C++17
89.47 / 100
49 ms1116 KiB
#include "insects.h"
#include <bits/stdc++.h>

using namespace std;

int n;

int min_cardinality(int N) {
	n = N;

	vector<int> v, in, out;

	for(int i=0; i<n; i++){
		move_inside(i);
		v.push_back(i);
		if(press_button()>=2){
			move_outside(i);
			v.pop_back();
			out.push_back(i);
		}
	}
	mt19937 mt(1234132);
	int lb = 0, rb = n / v.size();
	while(lb<rb){
		int mb = (lb+rb+1)/2;

		vector<int> nout;
		shuffle(out.begin(), out.end(), mt);

		for(auto x:out){
			if(v.size()*mb==in.size()){
				nout.push_back(x);
			}else{
				move_inside(x);
				if(press_button()>mb+1){
					move_outside(x);
					nout.push_back(x);
				}else{
					in.push_back(x);
				}
			}
		}

		if(v.size()*mb==in.size()){
			lb=mb;
			out=nout;
		}else{
			rb=mb-1;
			out = in;
			for(auto x:in) move_outside(x);
			in.clear();
		}
	}

	return lb+1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...