#include <bits/stdc++.h>
using namespace std;
int search(int l, int r, int i, int memo){
int res;
while (l < r){
int m = (l+r+1)/2;
cout<<r-l+2<<' ';
for (int j = l; j <= r; ++j){
cout<<j<<' ';
}
cout<<i<<' ';
cout<<endl;
cin >> res;
if (res == r-l+2){
//cout<<"look on left "<<endl;
r = m;
}else{
//cout<<"look on right "<<m<<' '<<endl;
l = m;
}
}
return l;
}
int main(){
int N;
cin >> N;
vector<int> sol(N+1);
cout<<2<<' '<<1<<' '<<2<<endl;
int res;
cin >> res;
if (res == 2){
sol[1] = 1;
sol[2] = 2;
}else{
sol[1] = 1;
sol[2] = 1;
}
vector<int> people;
int num = 2;
people.push_back(1);
people.push_back(2);
int memo = res;
for (int i = 3; i <= N; ++i){
people.push_back(i);
num++;
cout<<num<<' ';
for (int in: people){
cout<<in<<' ';
}
cout<<endl;
cin >> res;
if (res > memo){
sol[i] = res;
memo = res;
}else{
int l = 1;
int r = i-1;
int m = (l+r+1)/2;
cout<<r-l+2<<' ';
for (int j = m; j <= r; ++j){
cout<<j<<' ';
}
cout<<i<<' ';
cout<<endl;
cin >> res;
int s;
if (res == memo){
s = search(l,m-1,i,memo);
}else{
s= search(m+1,r,i,memo);
}
//cout<<" s "<<s<<endl;
sol[i] = sol[s];
}
}
cout<<0<<' ';
for (int i = 1; i <= N; ++i){
cout<<sol[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... |