小慕正在组织一场班级活动,需要给一队小朋友排队。这些小朋友身高各不相同,小慕希望队伍按照“高”“矮”“高”“矮”的顺序交替排列。我们用正整数数组表示这队小朋友的身高,例如数组{5, 3, 1, 2, 3}。 在排列中,每个“高”位置上的小朋友要比相邻的小朋友高或者相等;每个“矮”位置上的小朋友要比相邻的小朋友矮或者相等。小慕希望小朋友们移动的总距离尽可能小,队伍从第一个位置开始就是“高”位。请输出最小的。 例如,对于队伍{5, 3, 1, 2, 3},排列{5, 1, 3, 2, 3}是一个可行的结果。而{5, 2, 3, 1, 3}虽然也满足“高”“矮”“高”“矮”的顺序,但小朋友们的移动距离更大,因此不是最优解。 移动距离的定义如下:如果某位小朋友从第i位移动到第j位,移动距离为|i - j|。例如,第二位小朋友移到第三位小朋友后面,移动距离为1;若移动到第四位小朋友后面,移动距离为2。
提示:带虚线的词点一下有通俗解释。
输入描述
排序前的小朋友,以英文空格的正整数:4 3 5 7 8 注:小朋友<100个
输出描述
排序后的小朋友,以英文空格分割的正整数:4 3 7 5 8 备注: 4 (高) 3 (矮) 7 (高) 5 (矮) 8 (高) ,输出结果为最小移动距离,只有5和7交换了位置,移动距离都是1。
示例
示例 1
输入
1 1 1 1 1
输出
1 1 1 1 1
说明:相邻位置可以相等
示例 2
输入
xxx
输出
[]
说明:出现非法参数情况,返回空数组
示例 3
输入
4 1 3 5 2
输出
4 1 5 2 3
时间限制 1000 ms · 内存限制 128 MB