题号:NC200616
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
钟Sir最近迷上一种排列交换游戏,游戏规则是这样的:
由1~n的n个互不相同的整数,按任意顺序组成的一个序列,称为1~n的一个排列。(如:[1,3,2]是一个排列,但[1,2,2][1,3,4]不是一个排列)
对于给定的排列,每次操作可以交换位置i和i+1上的元素(1≤i<n,显然一共存在n-1种操作),但每种操作最多执行一次,操作次序不限(显然最多执行n-1次操作,当然也可以选择不操作)。
问在不违反游戏规则的前提下,能够得到的字典序最小的排列是什么?(如:[1,2,3]字典序小于[1,3,2])
钟Sir觉得一定要玩t场游戏,才能够体现他的强悍实力,但是钟Sir是人不是神仙来的,没办法一口气玩t场游戏(还会死很多脑细胞的),所以钟Sir想让你写一个程序来帮助他。
输入描述:
第一行是一个整数t(1<=t<=100),表示游戏场数。
接下来对每场游戏有两行描述,
第一行是一个整数n(1<=n<=100),表示排列的长度,
第二行包含n个整数,表示给定的1~n的一个排列。
输出描述:
输出在不违反游戏规则的前提下,能够得到的字典序最小的排列。
示例1
输入
复制
4
5
5 4 1 3 2
4
1 2 4 3
1
1
4
4 3 2 1
输出
复制
1 5 2 4 3
1 2 3 4
1
1 4 3 2
说明
教练试玩第一场游戏后,建议你这样操作
5 4 1 3 2 -> 5 4 1 2 3 -> 5 1 4 2 3 -> 1 5 4 2 3 -> 1 5 2 4 3