#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define int long long
int n;
vector <int> curr;
int arr[300001];
int num=1;
int ask(vector <int> curr){
cout<<curr.size()<<" ";
for(int j:curr) cout<<j<<" ";
int ans;
cin>>ans;
return ans;
}
int solve(vector <int> v,int i){
int l=0,r=v.size()-1,idx=-1;
while(l<=r){
int mid=(l+r)/2;
vector <int> query;
for(int j=l;j<=mid;j++){
query.push_back(v[j]);
}
query.push_back(i);
if(ask(query)==(int)query.size()-1){
idx=v[mid];
r=mid-1;
}
else l=mid+1;
query.clear();
}
return idx;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int i=1;i<=n;i++){
curr.push_back(i);
if(ask(curr)==curr.size()){
arr[i]=num++;
continue;
}
curr.pop_back();
arr[i]=arr[solve(curr,i)];
}
cout<<0<<" ";
for(int i=1;i<=n;i++) cout<<arr[i]<<" ";
return 0;
}
//g++ -std=c++17 template.cpp -o executable.exe
| # | 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... |