Submission #658625

#TimeUsernameProblemLanguageResultExecution timeMemory
658625pere_gilRarest Insects (IOI22_insects)C++17
100 / 100
57 ms424 KiB
#include "insects.h"
#include "bits/stdc++.h"
using namespace std;
         
int min_cardinality(int n) {
	vector<int> in,out;
	for(int i=0;i<n;i++){
		move_inside(i);
		if(press_button()>1){
			move_outside(i);
			out.push_back(i);
		}
		else in.push_back(i);
	}
	int dif=(int)in.size();

	if(dif==1) return n;
	
	int l=1,r=n/dif+1;
	while(l+1<r){
		int med=(l+r)/2;
		vector<int> new_in,new_out;
		
		while(out.size()){
			int u=out[out.size()-1];
			out.pop_back();
			
			move_inside(u);
			int q=press_button();
			if(q>med){
				move_outside(u);
				new_out.push_back(u);
			}
			else new_in.push_back(u);

			if(in.size()+new_in.size()==dif*med) break;
		}

		if(in.size()+new_in.size()==dif*med){
			for(int i: new_in) in.push_back(i);
			for(int i: new_out) out.push_back(i);
			l=med;
		}
		else{
			for(int i: new_in){
				move_outside(i);
				out.push_back(i);
			}
			r=med;
		}
		
	}
	
	return l;
}

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:36:30: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |    if(in.size()+new_in.size()==dif*med) break;
      |       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
insects.cpp:39:29: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   39 |   if(in.size()+new_in.size()==dif*med){
      |      ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...