记录编号 |
70241 |
评测结果 |
AAWAEEEEEE |
题目名称 |
排序 |
最终得分 |
30 |
用户昵称 |
Citron酱 |
是否通过 |
未通过 |
代码语言 |
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();
}