제출 #1281359

#제출 시각아이디문제언어결과실행 시간메모리
1281359muhammad-ahmad사육제 (CEOI14_carnival)C++20
0 / 100
2 ms336 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

void query(vector<int> a){
	cout << a.size() << ' ';
	for (auto i : a) cout << i << ' ';
	cout << endl;
}

int ans(){
	int x; cin >> x;
	return x;
}

void solve(){
	int n; cin >> n;
	int lst = 0;
	vector<int> dist;
	for (int i = 1; i <= n; i++){
		dist.push_back(i);
		query(dist);
		int x = ans();
		if (x == lst) dist.pop_back();
		else lst = x;
	}
	int val[n + 1] = {};
	for (int i = 0; i < (int) dist.size(); i++) val[dist[i]] = i + 1;
	
	for (int i = 1; i <= n; i++){
		if (val[i] > 0) continue;
		int l = 0, r = dist.size() - 1;
		while (r > l){
			int m = (l + r) / 2;
			vector<int> q = {i};
			for (int j = l; j <= m; j++) q.push_back(dist[j]);
			query(q);
			int x = ans();
			if (x == m - l + 1){
				r = m;
			}
			else l = m + 1;
		}
		val[i] = val[l + 1];
	}
	for (int i = 1; i <= n; i++) cout << val[i] << ' ';
	cout << endl;
}

signed main(){
	int tc = 1;
	// cin >> tc;
	while (tc--){
		solve();
	}
}
#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...