Submission #1332697

#TimeUsernameProblemLanguageResultExecution timeMemory
1332697salmon드문 곤충 (IOI22_insects)C++20
0 / 100
1 ms344 KiB
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;

namespace{
	bool taken[2000 + 5];
	
	
	void add(int i, vector<int> &v){
		taken[i] = true;
		v.push_back(i);
		move_inside(i);
	}

	void undo(vector<int> &v){
		taken[v.back()] = false;
		move_outside(v.back());
		v.pop_back();
	}

	int query(){
		return press_button();
	}
}


int min_cardinality(int N) {
	
	
	for(int i = 0; i < N; i++) taken[i] = false;
	
	vector<int> v;
	
	for(int i = 0; i < N; i++){
		add(i,v);
		
		if(query() > 1) undo(v);
	}
	
	
	int s = 2;
	int e = N/v.size();
	
	while(s < e){
		long long int m = (s + e+1)/2;
		
		vector<int> v1;
		
		for(int i = 0; i < N; i++){
			if(!taken[i]){
				add(i,v1);
				
				if(query() > m) undo(v1);
			}
		}
		
		if(v1.size() == v.size() * (m-s)){
			s = m;
		}
		else{
			while(!v1.empty()) undo(v1);
			e = m - 1;
		}
	}
	
  return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...