Submission #709965

#TimeUsernameProblemLanguageResultExecution timeMemory
709965vjudge1Carnival (CEOI14_carnival)C++17
100 / 100
14 ms7492 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define fi first
#define se second
#define pb push_back

typedef pair<int, int> ii;
typedef pair<ii, int> iii;
typedef pair<ii, ii> iiii;

const int N = 3e5 + 5;
const int mod = 1e9 + 7, oo = 1e18 + 7;

int n;

int cnt;
vector<int> comps[N];

int cal(vector<int> vc){
	cout << vc.size() << " ";
	for(auto it : vc) cout << it << " ";
	cout << "\n";
	int x;
	cin >> x;
	return x;
}

int answer[N];

void process(){
    cin >> n;
    comps[1].pb(1);
    cnt = 1;
    for(int i = 2; i <= n; i++){
    	vector<int> ask;
    	for(int j = 1; j <= i; j++) ask.pb(j);
    	if(cal(ask) > cnt){
    		cnt++;
    		comps[cnt].pb(i);
    		continue;
		}
		int l = 1, r = cnt;// first component that contains this guy
		while(l < r){
			int mid = (l + r) >> 1;
			ask.clear();
			for(int j = 1; j <= mid; j++){
				for(auto it : comps[j]) ask.pb(it);
			}
			ask.pb(i);
			if(cal(ask) > mid) l = mid + 1;
			else r = mid;
		}
		comps[l].pb(i);
	}
	for(int i = 1; i <= cnt; i++){
		for(auto it : comps[i]) answer[it] = i;
	}
	cout << 0 << " ";
	for(int i = 1; i <= n; i++) cout << answer[i] << " ";
	cout << "\n";
}

signed main(){
    //ios_base::sync_with_stdio(0);
    //freopen("KEK.inp", "r", stdin);
    //freopen("KEK.out", "w", stdout);
    //cin.tie(0);
    process();
}
#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...