Submission #245667

#TimeUsernameProblemLanguageResultExecution timeMemory
245667hohohahaCarnival (CEOI14_carnival)C++14
100 / 100
20 ms504 KiB
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define vii vector<pair<int, int> >
#define fi first
#define se second
int diff[155][155];
int col[155];
int rep, n;
void ask(int l, int r, int add)
{
	cout<<r-l+2<<" ";
	for(int i=l; i<=r; i++)
	{
		cout<<i<<" ";
	}
	cout<<add<<"\n";
	fflush(stdout);
	cin>>rep;
}
void ans()
{
	cout<<0<<" ";
	for(int i=1; i<=n; i++) cout<<col[i]<<' ';
	cout<<endl;
	fflush(stdout);
}
signed main()
{
	int cnt=0;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		if(i==1)
		{
			diff[1][1]=1;
			col[1]=++cnt;
		}
		else 
		{
			int ll = 1, rr = i-1;
			while(ll<rr)
			{
				int mid = (ll+rr)/2;
				ask(ll, mid, i);
				if(rep==diff[ll][mid]) rr = mid;
				else ll=mid+1;
			}
			ask(ll,ll, i);
			if(rep==diff[ll][ll]) col[i]=col[ll];
			else col[i]=++cnt;
			set<int> s;
			for(int j=i; j>=1; j--)
			{
				s.insert(col[j]);
				diff[j][i]=s.size();
			}
		}
	}
	ans();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...