#include<bits/stdc++.h>
using namespace std;
int p[155];
int fp(int u){return p[u]==u?u:p[u]=fp(p[u]);}
void un(int u,int v){
if(v>u)swap(u,v);
return void(p[fp(u)]=fp(v));
}
vector<int>v;
int n;
int get(vector<int>&v){
cout<<v.size()<<" ";
for(auto x:v)assert(x<=n),cout<<x<<" ";
cout<<endl;
int x;cin>>x;
return x;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)p[i]=i;
v.push_back(1);
for(int i=2;i<=n;i++){
v.push_back(i);
int x=get(v);
if(x!=v.size()){
int st=0,en=v.size()-1,ans=0;
while(st<=en){
int m=(st+en)/2;
vector<int>nv;
for(int j=m;j<v.size();j++){
nv.push_back(v[j]);
}
int val=get(nv);
if(val!=nv.size()){
ans=m,st=m+1;
}else{
en=m-1;
}
}
assert(ans>=0&&ans<v.size());
assert(v[ans]<=n);
un(v[ans],i);
v.pop_back();
}
}
cout<<"0 ";
for(int i=1;i<=n;i++)cout<<fp(i)<<" ";
cout<<endl;
}
# | 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... |