#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pll pair<int, int>
#define mp make_pair
#define pb push_back
#define f first
#define s second
signed main(){
int n;cin>>n;
vector<int> ans(n+1, 0), pfx(n+1, 1);
for(int i=2;i<=n;i++){
cout<<i<<" ";
for(int j=1;j<=i;j++) cout<<j<<" ";
cout<<endl;
cin>>pfx[i];
}
for(int i=1;i<=n;i++)ans[i]=i;
int cnt=2;
for(int i=2;i<=n;i++){
assert(pfx[i]-pfx[i-1]<=1);
if(pfx[i]==pfx[i-1]+1){
ans[i]=cnt++;
}
else {
int l=1, r=i, m;
while(r-l>1){
m=(l+r)/2;
set<int> s;
cout<<i-m+1<<" ";
for(int j=m;j<=i;j++){
cout<<j<<" ";
s.insert(ans[j]);
}
cout<<endl;
int act, sup=s.size();cin>>act;
assert(act >= sup-1 and act <= sup);
if(act == sup)r=m;
else l=m;
}
ans[i]=ans[l];
}
}
cout<<"0 ";
for(int i=1;i<=n;i++)cout<<ans[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... |