#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define fi first
#define se second
#define all(a) a.begin(),a.end()
const int maxn = 2 * 1e6;
const int mod = 1e9 + 7;
vector <int> bin = {1};
int que(int in ,vector <int> tem){
cout<<tem.size() + 1<<' '<<in<<' ';
for(int i : tem)cout<<i<<' ';
cout<<endl;
cout.flush();
int an;
cin>>an;
return an;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n;
vector <int> ans[n + 1];
for(int i = 2;i <= n;i++){
int c = que(i,bin);
if(c > bin.size()){
bin.push_back(i);
continue ;
}
int st = 0,en = bin.size() - 1,mid;
int x;
while(st <= en){
mid = (st + en )/2;
vector <int> t;
for(int i = st;i <= mid;i++){
t.push_back(bin[i]);
}
c = que(i, t);
if(c == (t.size()-1)){
en = mid - 1;
x=bin[mid];
}
else{
st = mid + 1;
}
}
ans[x].push_back(i);
}
cout<<0<<' ';
int cnt=1;
int out[n+1]={};
for(int i = 1;i <= n;i++){
if (out[i]==0){
out[i]=cnt;
cnt++;
}
for(int j : ans[i]){
out[j]=out[i];
}
}
for (int i=1;i<=n;i++){
cout<<out[i]<<" ";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |