Submission #772456

#TimeUsernameProblemLanguageResultExecution timeMemory
772456alex_2008Rarest Insects (IOI22_insects)C++17
0 / 100
13 ms304 KiB
#include "insects.h"
#include <vector>
#include <iostream>
#include <set>
using namespace std;
const int N = 2023;
bool used[N];
int min_cardinality(int N) {
	vector <int> unique;
	for (int i = 0; i < N; i++) {
		move_inside(i);
		if (press_button() > 1) {
			move_outside(i);
		}
		else unique.push_back(i);
	}
	set <int> in;
	for (auto it : unique) {
		used[it] = true;
		in.insert(it);
	}
	int M = N / (int)unique.size();
	int l = 2, r = M, ans = 1;
	while (l <= r) {
		int mid = (l + r) / 2;
		vector <int> pushed;
		for (int i = 0; i < N; i++) {
			if (!used[i]) {
				move_inside(i);
				if (press_button() > mid) {
					move_outside(i);
				}
				else pushed.push_back(i);
			}
		}
		if ((int)pushed.size() + (int)in.size() == mid * (int)unique.size()) {
			for (auto it : pushed) {
				in.insert(it);
			}
			ans = mid;
			l = mid + 1;
		}
		else {
			for (auto it : pushed) {
				move_outside(it);
			}
			r = mid - 1;
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...