#bzoj2214. Shift
Shift
题目翻译
给儿子买了一套从到编号的积木,并按照一定的顺序排列成一排。的目标是重新排列块,使其从最小数字到最大数字自然排序。但是,只允许进行以下操作:将最后一个块放在最开始的位置(移动),并将第三个块放置在最开始位置(移动)。帮助编写一个程序,告诉一个给定的块排列是否可以正确地重新排序,如果可以,告诉正确的移动顺序。
题目解释
有一个的排列,有两种操作:
- (a) 将最后一个数移到最前面
- (b) 把第三个数移到最前面
我们将连续进行次同一个操作称为“一块操作”,表示为或。找到一个操作序列使得进行这些操作后,排列变为。
输入格式
翻译
在标准输入的第一行中有一个整数。在第二行中,有从到的整数,用单个空格分隔。没有数字出现两次,因此它们代表了块的初始排列。
解释
第一行;
下面一行个数表示这个排列。
输出格式
原件:tmp.png
翻译
如果没有一系列的动作导致区块数量增加的安排,你的程序应该打印出NIE DA SIE(波兰语中没有wey),没有引号。否则,在第一行中应该有一个整数,表示操作次数,操作是或移动的次执行。如果,那么第二行应该有一个附加了或的整数序列。因此,(对于)表示移动的次执行,类似地,(对于)表示操作的次重复执行。此外,第二行中数字对应的字符必须交替。如果有多个解决方案,你的程序可以任意选择一个。
解释
如果不存在这样的操作序列,输出NIE DA SIE,否则第一行,表示操作的块数。
下面一行,表示这块操作。需要满足相邻两块操作的种类不同,每块操作中进行的次数大于小于。
样例
4
1 3 2 4
4
3a 2b 2a 2b
7
1 3 2 4 5 6 7
NIE DA SIE
3
1 2 3
0
数据范围与约定
对于的数据:.
鸣谢
鸣谢