#include"bits/stdc++.h"
// #include"m.cpp"
using namespace std;
using ll=long long;
#define S second
#define F first
int qry(vector<int>x){
cout<<x.size();
for(int i:x)cout<<' '<<i;
cout<<endl;
int r;
cin>>r;
return r;
}
vector<int>rng(int i,int l,int r){
vector<int>x;
if(i!=-1)x.push_back(i);
for(int i=l;i<=r;i++)x.push_back(i);
return x;
}
vector<int>a;
set<int>s;
void rec(int i,int l,int r){
// cout<<"enter "<<i<<' '<<l<<' '<<r<<endl;
int q=qry(rng(i,l,r));
if(qry(rng(-1,l,r))+1==q)return;
if(q==1){
for(int j=l;j<=r;j++)a[j]=a[i];
return;
}
int m=(l+r)/2;
rec(i,l,m);
rec(i,m+1,r);
}
int main(){
cin.tie(0)->sync_with_stdio(0);
// remember(4095);
// cout<<compare(2214);
// int mxa=0,mxb=0;
// for(int i=0;i<4096;i++){
// remember(i);
// // cout<<i<<' '<<compare(0)<<endl;
// mxa=max(mxa,cn);
// for(int j=0;j<4096;j++){
// int g=compare(j);
// mxb=max(mxb,k);
// if(mxb==14)cout<<j<<' '<<i<<endl;
// }
// }
// cout<<mxb;
// remember(31);
// cout<<compare(63)<<endl;
// cout<<compare(31)<<endl;
// cout<<compare(30)<<endl;
// cout<<compare(32)<<endl;
int n;
cin>>n;
a.resize(n+1,-1);
for(int i=1;i<=n;i++)s.insert(i);
for(int i=1;i<=n;i++){
if(a[i]!=-1)continue;
a[i]=*s.begin();
s.erase(s.begin());
rec(i,i+1,n);
}
cout<<0;
for(int i=1;i<=n;i++)cout<<' '<<a[i];
cout<<flush;
}
| # | 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... |