Submission #1044208

#TimeUsernameProblemLanguageResultExecution timeMemory
1044208vjudge1Zagonetka (COI18_zagonetka)C++17
9 / 100
48 ms344 KiB
#include <bits/stdc++.h>

using namespace std;

int query(vector<int> v)
{
	int x;
	cout<<"query";
	for (int i:v)
		cout<<' '<<i;
	cout<<endl;
	cin>>x;
	return x;
}

signed main()
{
	int n;
	cin>>n;
	int x;
	for (int i=0;i<n;i++)
		cin>>x;
	if (n<=6)
	{
		vector<int> v;
		for (int i=1;i<=n;i++)
			v.push_back(i);
		vector<int> ans,ans1;
		do
		{
			if (query(v))
			{
				if (ans.empty())
					ans=v;
				ans1=v;
			}
		}while(next_permutation(v.begin(),v.end()));
		cout<<"end\n";
		for (int i=0;i<n-1;i++)
			cout<<ans[i]<<' ';
		cout<<ans.back()<<'\n';
		for (int i=0;i<n-1;i++)
			cout<<ans1[i]<<' ';
		cout<<ans1.back()<<endl;
	}
	else
	{
		vector<int> v,ans,ans1;
		for (int i=1;i<=n;i++)
			v.push_back(i);
		x=query(v);
		ans=ans1=v;
		reverse(ans1.begin(),ans1.end());
		if (!x)
		{
			int cnt[n]={},mx=0;
			for (int i=0;i<n;i++)
				for (int j=i+1;j<n;j++)
				{
					swap(v[i],v[j]);
					if (query(v))
						cnt[i]++,cnt[j]++,mx=max(mx,max(cnt[i],cnt[j]));
					swap(v[i],v[j]);
				}
			int pi=-1,pj=0;
			for (int i=0;i<n;i++)
				if (cnt[i]==mx)
				{
					if (pi==-1)
						pi=i;
					else
						pj=i;
				}
			for (int i=pi+1;i<=pj;i++)
				swap(ans[i],ans[i-1]);
		}
		else
		{
			v=ans1;
			int cnt[n]={},mx=0;
			for (int i=0;i<n;i++)
				for (int j=i+1;j<n;j++)
				{
					swap(v[i],v[j]);
					if (query(v))
						cnt[i]++,cnt[j]++,mx=max(mx,max(cnt[i],cnt[j]));
					swap(v[i],v[j]);
				}
			int pi=-1,pj=0;
			for (int i=0;i<n;i++)
				if (cnt[i]==mx)
				{
					if (pi==-1)
						pi=i;
					else
						pj=i;
				}
			for (int i=pi+1;i<=pj;i++)
				swap(ans1[i],ans1[i-1]);
		}
		cout<<"end\n";
		for (int i=0;i<n-1;i++)
			cout<<ans[i]<<' ';
		cout<<ans.back()<<'\n';
		for (int i=0;i<n-1;i++)
			cout<<ans1[i]<<' ';
		cout<<ans1.back()<<endl;
	}
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...