#include <bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define pii pair<int,int>
#define emb emplace_back
#define em emplace
#define all(x) x.begin(),x.end()
#define DB cout<<"\n";system("pause");
#define sp <<" "<<
using namespace std;
int n;
int ask(int n ,vector <int> ans){
cout<<n<<" ";
for(auto x : ans)cout<<x<<" ";
cout<<endl;
int x;
cin>>x;
return x;
}
int main(){
cin>>n;
vector <int> group;
vector <int> par(n+1);
par[1]=1;
group.emb(1);
for(int i=2;i<=n;i++){
vector <int> ask_ = group;
ask_.emb(i);
if(ask(ask_.size() , ask_) != group.size()){
group.emb(i);
par[i] = group.size();
}
else {
int left = 0 , right = group.size() - 1;
int ans;
while(left <= right){
int mid = (left + right)/2;
vector <int> temp(group.begin(),group.begin() + mid + 1);
temp.emb(i);
if(ask(temp.size() , temp) > temp.size() - 1){
left = mid + 1;
}
else {
ans = mid ;
right = mid - 1;
}
}
par[i] = ans+1;
}
}
vector <int> output;
for(int i=1;i<=n;i++){
output.emb(par[i]);
}
ask(0,output);
}
# | 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... |