记录编号 70241 评测结果 AAWAEEEEEE
题目名称 排序 最终得分 30
用户昵称 GravatarCitron酱 是否通过 未通过
代码语言 C++ 运行时间 0.429 s
提交时间 2013-09-25 14:11:44 内存使用 0.31 MiB
显示代码纯文本
#include <fstream>

#define I_F "sorta.in"
#define O_F "sorta.out"

const short MAXn=24;

short n;
int a[MAXn], b[MAXn];
int ans;
short w[100];

void Input();
template<typename Any>
inline void Swap(Any&, Any&);
void Sort();
bool Judge();
void Rotate(const short&);
void Search();
void Output();

int main()
{
	Input();
	Sort();
	Search();
	Output();
	return 0;
}

void Input()
{
	std::ifstream fin(I_F);
	fin>>n;
	for (int i=0; i<n; ++i)
	{
		fin>>a[i];
		b[i]=a[i];
	}
	fin.close();
}

template<typename Any>
inline void Swap(Any &a, Any &b)
{
	Any t=a;
	a=b;
	b=t;
}

void Sort()
{
	bool f=true;
	for (short i=n-1; i>=0 && f; --i)
	{
		f=false;
		for (short j=0; j<i; ++j)
			if (b[j]>b[j+1])
				f=true,
				Swap(b[j],b[j+1]);
	}
}

bool Judge()
{
	for (short i=1; i<n; ++i)
		if (a[i]<a[i-1])
			return true;
	return false;
}

void Rotate(const short &x)
{
	for (short i=0; i<=x/2; ++i)
		Swap(a[i],a[x-i]);
}

void Search()
{
	ans=0;
	short i,j;
	while (Judge())
	{
		for (i=0; b[i]!=a[0]; ++i);
		if (i==n-1)
			Rotate(n-1),
			w[ans]=n;
		else
		{
			for (j=1; a[j]!=b[i+1]; ++j);
			Rotate(j-1);
			w[ans]=j;
		}
		++ans;
	}
}

void Output()
{
	std::ofstream fout(O_F);
	fout<<ans<<std::endl;
	for (short i=0; i<ans; ++i)
		fout<<w[i]<<' ';
	fout.close();
}