比赛 20120418s 评测结果 RRRRRRRR
题目名称 山海经 最终得分 0
用户昵称 苏轼 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-18 11:19:28
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct hehe
{
	int a[30];
	int k[30];
	int ans;
}q[100000];
int n,tou,wei;
int w[30];
void bfs();
int main()
{
	freopen ("sorta.in","r",stdin);
	freopen ("sorta.out","w",stdout);
	cin>>n;
	for (int i=0;i<n;i++)
	{
		cin>>w[i];
		q[1].a[i]=w[i];
	}
	bfs();
	return 0;
}
void bfs()
{
	tou=wei=1;
	q[1].ans=0;
	while (tou<=wei)
	{
		for (int i=2;i<=n;i++)
		{
			int tmp[30]={0};
			for (int j=0;j<n;j++)
			{
				if (j<i)
					tmp[j]=q[tou].a[i-j-1];
				else
					tmp[j]=q[tou].a[j];
			}
			int v=0;
			for (int j=1;j<=wei;j++)
			{
				for (int k=0;k<n;k++)
				{
					if (q[j].a[k]!=tmp[k])
					{
						v=1;
						break;
					}
				}
				if (v)
					break;
			}
			if (v)
			{
				int p=0;
				for (int j=0;j<n-1;j++)
				{
					if (tmp[j]>tmp[j+1])
					{
						p=1;
						break;
					}
				}
				if (!p)
				{
					cout<<q[tou].ans+1<<endl;
					for (int j=0;j<q[tou].ans;j++)
					{
						cout<<q[tou].k[j]<<' ';
					}
					cout<<i;
					return;
				}
				wei++;
				for (int j=0;j<n;j++)
				{
					q[wei].a[j]=tmp[j];
				}
				for (int j=0;j<q[tou].ans;j++)
				{
					q[wei].k[j]=q[tou].k[j];
				}
				q[wei].k[q[tou].ans+1]=i;
				q[wei].ans=q[tou].ans+1;
			}
		}
		tou++;
	}
}