#include <bits/stdc++.h>
using namespace std;
vector<int> unq,a;
int n;
bool ask(vector<int> &arr,int start,int end,int late){
start--;
cout<<end-start+1<<" ";
for(int i=start;i<=end-1;i++){
cout<<unq[i]<<" ";
}
cout<<late<<" ";
int n;
cin>>n;
if(n==end-start+1)return true;
else{
return false;
}
}
map<int,int> coss;
int main(){
cin>>n;
coss[1]=1;
unq.emplace_back(1);
for(int i=2;i<=n;i++){
if(ask(unq,1,unq.size(),i)){
unq.emplace_back(i);
}
}
// cout<<0<<" ";
int now=1;
for(auto i:unq){
coss[i]=now++;
}
for(int i=1;i<=n;i++){
if(coss[i]==0){
int l=1,mid,r=unq.size();
int best=0;
// cout<<"\n"<<r<<"\n";
while(l<=r){
mid=l+(r-l)/2;
// cout<<r<<" "<<mid<<"\n";
if(mid<=0)break;
if(!ask(unq,l,mid,i)){
best=r;
if(l==r){
break;
}
r=mid;
}
else{
l=mid+1;
}
}
coss[i]=coss[unq[best-1]];
}
}
cout<<0<<" ";
for(int i=1;i<=n;i++){
cout<<coss[i]<<" ";
}
}
# | 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... |