제출 #667048

#제출 시각아이디문제언어결과실행 시간메모리
667048mychecksedadRarest Insects (IOI22_insects)C++17
25 / 100
188 ms496 KiB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
void move_inside(int i);
void move_outside(int i);
int press_button();


int min_cardinality(int n){
	set<int> v;
	for(int i = 0; i < n; ++i){
		v.insert(i);
		move_inside(i);
	}
	int ans = n;
	while(1){
		int k = press_button();
		vector<bool> in(n, 1);
		if(k == v.size() || k == 1){
			return k;
		}else if(k >= sqrt(n)){
			int index = 0;
			for(int i: v){
				move_outside(i);
				in[i] = 0;
				int k1 = press_button();
				if(k1 != k){
					index = i;
					break;
				}
			}
			for(int x: v) if(in[x]) move_outside(x), in[x] = 0;
			move_inside(index);
			in[index] = 1;
			vector<int> removed = {index};
			for(int i: v){
				if(i != index){
					move_inside(i);
					int k1 = press_button();
					if(k1 > 1){
						removed.pb(i);
					}
					move_outside(i);
				}
			}
			for(int x: removed) v.erase(x);
		}else{
			for(int i: v){
				in[i] = 0;
				move_outside(i);
			}
			int group_num = 0;
			for(int i: v){
				move_inside(i);
				int k1 = press_button();
				in[i] = 1;
				if(k1 > 1){
					move_outside(i);
					in[i] = 0;
				}else group_num++;
			}
			vector<int> removed;
			for(int i: v){
				if(in[i]) continue;
				move_inside(i);
				int k1 = press_button();
				if(k1 == k){
					removed.pb(i);
					move_outside(i);
				}else in[i] = 1;
			}
			if(removed.size() == group_num){
				return k;
			}
			for(int i: removed) v.erase(i);
		}
		for(int x: v) if(!in[x]) move_inside(x);
	}
	return ans;
}	

컴파일 시 표준 에러 (stderr) 메시지

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:19:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::set<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |   if(k == v.size() || k == 1){
      |      ~~^~~~~~~~~~~
insects.cpp:72:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   72 |    if(removed.size() == group_num){
      |       ~~~~~~~~~~~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...