제출 #787698

#제출 시각아이디문제언어결과실행 시간메모리
787698khshg드문 곤충 (IOI22_insects)C++17
99.95 / 100
58 ms468 KiB
#include"insects.h"
#include<bits/stdc++.h>
using namespace std;

int min_cardinality(int N) {
	int k;
	int D = 0;
	set<int> INs;
	for(int i = 0; i < N; ++i) {
		INs.insert(i);
		move_inside(i);
		k = press_button();
		if(k == 2) {
			INs.erase(i);
			move_outside(i);
			continue;
		}
		++D;
	}
	int tl = 1, tr = N / D;
	vector<bool> skp(N);
	while(tl < tr) {
		int tm = (tl + tr + 1) / 2;
		vector<int> lst_added, ws;
		for(int i = 0; i < N; ++i) {
			if(skp[i] || !INs.insert(i).second) continue;
			move_inside(i);
			k = press_button();
			if(k > tm) {
				INs.erase(i);
				move_outside(i);
				ws.push_back(i);
				continue;
			}
			lst_added.push_back(i);
			if(D * tm == (int)INs.size()) break;
		}
		if((int)INs.size() < D * tm) {
			tr = tm - 1;
			if(tl == tr) continue;
			for(auto& u : lst_added) {
				INs.erase(u);
				move_outside(u);
			}
			for(auto& u : ws) {
				skp[u] = 1;
			}
		} else {
			tl = tm;
		}
	}
	return (tl + tr) / 2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...