제출 #1191542

#제출 시각아이디문제언어결과실행 시간메모리
1191542drakozs드문 곤충 (IOI22_insects)C++20
49.02 / 100
57 ms532 KiB
#include "insects.h"
#include<bits/stdc++.h>

using namespace std;

int min_cardinality(int N) {
	vector<int> temp;
	int d = 0;
	for (int i = 0; i < N; i++){
		move_inside(i);
		int count = press_button();
		if (count > 1){
			move_outside(i);
		}
		else{
			temp.push_back(i);
			d++;
		}
	}
	for (int i = 0; i < temp.size(); i++){
		move_outside(temp[i]);
	}
	
	int l = 1, r = N, mid;
	int ans = N;
	set<int> all;
	for (int i = 0; i < N; i++){
		all.insert(i);
	}
	vector<bool> done(N, 0);
	vector<int> take;
	while(l <= r){
		mid = (r - l) / 2 + l;
		auto it = all.begin();
		while (it != all.end()){
			if (done[*it]){
				it = next(it);
				continue;
			}
			move_inside(*it);
			done[*it] = 1;
			int count = press_button();
			if (count > mid){
				move_outside(*it);
				done[*it] = 0;
			}
			else{
				take.push_back(*it);
				if (take.size() == mid * d) break;
			}
			it = next(it);
		}
		if (take.size() == mid * d){
			ans = mid;
			l = mid + 1;
		}
		else{
			r = mid - 1;
			all.clear();
			for (auto &num : take){
				done[num] = 0;
				move_outside(num);
				all.insert(num);
			}
			take.clear();
		}
	}
	return ans;
	
	return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...