#include<bits/stdc++.h>
using namespace std;
#define int long long
#pragma GCC optimize("O3,unroll-loops")
#define pb push_back
#define fir first
#define sec second
#define ii pair<int,int>
vector<int>idx;
int query(int a,int b){
cout<<a+2<<" ";
for(int q=0;q<=a;q++){
cout<<idx[q]<<" ";
}
cout<<b<<" ";
cout<<endl;
int brp; cin>>brp;
return brp;
}
signed main(){
int n; cin>>n;
int ans[n+1];
idx.pb(1); ans[1]=1;
for(int q=2;q<=n;q++){
int l=0,r=idx.size()-1;
int mana=-1;
while(l<=r){
int mid=(l+r)/2;
int brp=query(mid,q);
if(brp==mid+2){
l=mid+1;
}
else{
mana=mid; r=mid-1;
}
}
if(mana==-1){
ans[q]=idx.size()+1;
idx.push_back(q);
}
else{
ans[q]=ans[idx[mana]];
}
}
cout<<0;
for(int q=1;q<=n;q++){
cout<<" "<<ans[q];
}
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... |