제출 #798183

#제출 시각아이디문제언어결과실행 시간메모리
798183aymanrsRarest Insects (IOI22_insects)C++17
0 / 100
1 ms228 KiB
#include<bits/stdc++.h>
const int MOD = 1e9+7;
using namespace std;
void move_inside(int i);
void move_outside(int i);
int press_button();
int min_cardinality(int N){
	int t = 0;
	vector<int> v;
	bool vis[N] = {false};
	for(int i = 0;i < N;i++){
		move_inside(i);
		if(press_button() == 2){
			move_outside(i);
		} else {
			vis[i] = true;
			t++;
			v.push_back(i);
		}
	}
	int ans = N;
	if(true){
		for(int i : v) if(i) move_outside(i);
		for(int i : v){
			if(!i) move_inside(i);
			t = 1;
			for(int j = i+1;j < N;j++){
				if(vis[j]) continue;
				move_inside(j);
				if(press_button() == 2){
					t++;
					vis[j] = true;
				}
				move_outside(j);
			}
			ans = min(ans, t);
		}
		return ans;
	}
	int l = 1, r = N/t, b = 1, m;
	while(l <= r){
		m = l+r>>1;
		int rb = 0;
		bool s[N] = {false};
		for(int i = 0;i < N;i++){
			if(vis[i]) continue;
			move_inside(i);
			if(press_button() > m){
				rb++;
				move_outside(i);
			} else s[i] = true;
		}
		if(rb == N-t*m) {
			b = m;
			l = m+1;
		} else r = m-1;
		if(l <= r) for(int i = 0;i < N;i++) if(s[i]) move_outside(i);
	}
	return b;
}

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

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:42:8: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   42 |   m = l+r>>1;
      |       ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...