제출 #47616

#제출 시각아이디문제언어결과실행 시간메모리
47616IvanC사육제 (CEOI14_carnival)C++17
100 / 100
24 ms656 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 161;

int pai[MAXN],cor[MAXN],N,jafoi,anterior[MAXN];

int find(int x){
	if(x == pai[x]) return x;
	return pai[x] = find(pai[x]);
}

void join(int x,int y){
	x = find(x);
	y = find(y);
	if(x == y) return;
	if(x > y) swap(x,y);
	pai[y] = x;
}

int main(){
	cin >> N;
	for(int i = 1;i<=N;i++) pai[i] = i;
	anterior[1] = 1;
	for(int u = 2;u<=N;u++){
		cout << u;
		for(int i = 1;i<=u;i++){
			cout << " " << i;
		}
		cout << endl;
		cin >> anterior[u];
		if(anterior[u] == anterior[u-1] + 1) continue;
		for(int i = 1;i<=u;i++){
			if(find(i) != i) continue;
			cout << 2 << " " << i << " " << u << endl;
			int qtd;
			cin >> qtd;
			if(qtd == 2) continue;
			join(u,i);
			break;
		}
	}
	cout << 0;
	for(int i = 1;i<=N;i++){
		if(cor[find(i)] == 0){
			cor[find(i)] = ++jafoi;
		}
		cout << " " << cor[find(i)]; 
	}
	cout << endl;
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...