Submission #1334529

#TimeUsernameProblemLanguageResultExecution timeMemory
1334529gohchingjaykRarest Insects (IOI22_insects)C++20
46.09 / 100
66 ms512 KiB
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;

signed min_cardinality(signed N) {
	using ll = long long;
	#define int ll

	bool placed[2005];
	int num_unique = 0;
	for (int i = 0; i < N; ++i) {
		move_inside(i);
		int call = press_button();
		if (call > 1) {
			move_outside(i);
		}
		else {
			placed[i] = true;
			num_unique++;
		}
	}
	for (int i = 0; i < N; ++i) if (placed[i]) move_outside(i);
	
	constexpr int LOG = 10;
	int curr = 1;
	// for (int i = 0; i < N; ++i) {
	for (int l = LOG; l >= 0; --l) {
		int inc = 1 << l;
		// int inc = 1;
		int tgt = curr + inc;
		
		set<int> this_iter;
		for (int j = 0; j < N; ++j) {
			// if (placed[j]) continue;
			
			move_inside(j);
			int call = press_button();
			if (call > tgt) {
				move_outside(j); continue;
			}
			
			this_iter.emplace(j);
		}
		
		if (this_iter.size() == (num_unique * tgt)) {
			// for (int i : this_iter) placed[i] = true;
			curr = tgt;
		}
		/*
		else {
			for (int i : this_iter) move_outside(i);
		}
		*/
		
		for (int i : this_iter) move_outside(i);
	}

	return curr;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...