#include <bits/stdc++.h>
using namespace std;
int n;
int a[151],c[151];
int query(int l,int r,int id)
{
cout<<r-l+2<<" ";
for(int i=l;i<=r;i++)
cout<<i<<" ";
if(id!=-1)cout<<id<<endl;
else cout<<endl;
int x;
cin>>x;
return x;
}
void rec(int l,int r)
{
if(l==r)
{
a[l]=1;
return;
}
if(l>r)return;
int m=(l+r)/2;
rec(l,m);
rec(m+1,r);
int num=0,diff;
for(int i=l;i<=m;i++)
num=max(num,a[i]);
diff=num;
for(int i=m+1;i<=r;i++)
c[a[i]]=0;
for(int i=m+1;i<=r;i++)
{
if(c[a[i]])
{
a[i]=c[a[i]];
continue;
}
int lf=l,rt=m;
int idx=-1;
while(lf<=rt)
{
int md=(lf+rt)/2;
if(query(l,md,i)==query(l,md,-1))
{
idx=md;
rt=md-1;
}
else lf=md+1;
}
if(idx==-1)
{
diff++;
c[a[i]]=diff;
a[i]=diff;
}
else
{
c[a[i]]=a[idx];
a[i]=a[idx];
}
}
}
int main()
{
cin>>n;
rec(1,n);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
# | 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... |