Submission #1170721

#TimeUsernameProblemLanguageResultExecution timeMemory
1170721thelegendary08Rarest Insects (IOI22_insects)C++17
10 / 100
100 ms408 KiB
#include "insects.h"
#include<bits/stdc++.h>
#define vi vector<int>
#define pb push_back
#define FOR(i, k, n) for(int i = k; i<n; i++)
#define f0r(i,n) for(int i = 0;  i< n; i++)
#define mp make_pair
#define pii pair<int,int>
#define vout(x) for(auto u : x)cout<<u<<' '; cout<<'\n';
using namespace std;
int min_cardinality(int n) {
	vi col(n, -1);
	int cur = 0;
	col[0] = 0;
	move_inside(0);
	move_inside(1);
	int x = press_button();
	if(x == 2)col[1] = col[0];
	FOR(i, 2, n){
		move_outside(i-1);
		move_inside(i);
		int x = press_button();
		if(x == 2){
			col[i] = col[0];
		}
	}
	// vout(col);
	move_outside(n-1);
	move_outside(0);
	FOR(i, 1, n){
		if(col[i] != -1)continue;
		cur++;
		col[i] = cur;
		move_inside(i);
		FOR(j, i + 1, n){
			if(j != i + 1)move_outside(j - 1);
			move_inside(j);
			int x = press_button();
			if(x == 2){
				// cout<<i<<' '<<j<<'\n';
				col[j] = col[i];
			}
		}
		move_outside(i);
		move_outside(n-1);
	}
	// vout(col);
	vi cnt(cur + 1);
	f0r(i, n)cnt[col[i]]++;
	int ans = 1e9;
	f0r(i, cur + 1){
		ans = min(ans, cnt[i]);
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...