Submission #1185283

#TimeUsernameProblemLanguageResultExecution timeMemory
1185283thelegendary08Rarest Insects (IOI22_insects)C++17
53.16 / 100
49 ms416 KiB
#include "insects.h"
#include<bits/stdc++.h>
#define f0r(i,n) for(int i = 0; i<n; i++)
#define vi vector<int>
#define vb vector<bool>
#define pb push_back
using namespace std;
int min_cardinality(int N) {
	vb in(N);
	f0r(i, N){
		move_inside(i);
		in[i] = 1;
		int x = press_button();
		if(x > 1){
			move_outside(i);
			in[i] = 0;
		}
	}
	int d = 0;
	f0r(i, N){
		if(in[i])d++;
	}
	int lo = 1;
	int hi = N/d+1;
	while(lo < hi){
		int mid = lo + (hi - lo + 1) / 2;
		vi lst;
		f0r(i, N){
			if(!in[i]){
				move_inside(i);
				in[i] = 1;
				
				int x = press_button();
				if(x > mid){
					move_outside(i);
					in[i] = 0;
				}
				else{
					lst.pb(i);
				}
			}
			
		}
		int cnt = 0;
		f0r(i, N){
			if(in[i])cnt++;
		}
		if(cnt == d * mid){
			lo = mid;
		}
		else{
			hi = mid - 1;
			for(auto u : lst){
				move_outside(u);
				in[u] = 0;
			}
		}
	}
	return lo;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...