Submission #1232603

#TimeUsernameProblemLanguageResultExecution timeMemory
1232603nicolo_010Rarest Insects (IOI22_insects)C++20
0 / 100
0 ms408 KiB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;
template <typename T>
using v = vector<T>;
using pii = pair<int, int>;
using ll = long long;
#define rep(i, k, n) for (int i = k; i < n; i++)

int min_cardinality(int N) {
	random_device rd;
	mt19937 gen(rd());
	v<int> pool(N);
	rep(i, 0, N) pool[i] = i;
	int ans = 1e9;
	rep(i, 0, min(40, N)) {
		if (pool.size() == 0) break;
		//cout << i << " " << pool.size() << endl;
		int r = pool.size();
		uniform_int_distribution<> dis(0, r-1);
		int idx = dis(gen);
		v<int> to_erase;
		to_erase.push_back(idx);
		idx = pool[idx];
		move_inside(idx);
		int cmp = 1;
		for (auto x : pool) {
			if (x == idx) continue;
			move_inside(x);
			int a = press_button();
			if (a == 2) {
				to_erase.push_back(x);
				cmp++;
			}
			move_outside(x);
		}
		move_outside(idx);
		ans = min(cmp, ans);
		for (auto x : to_erase) {
			//cout << x << endl;
			auto it = find(pool.begin(), pool.end(), x);
			if (it != pool.end()) pool.erase(it);
		}
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...