Problem
【CERC2007】Robotic Sort
Description
Input
输入共两行,第一行为一个整数,表示物品的个数,。
第二行为个用空格隔开的正整数,表示个物品最初排列的编号。
Output
输出共一行,个用空格隔开的正整数,表示第次操作前第小的物品所在的位置。
注意:如果第次操作前,第小的物品己经在正确的位置上,我们将区间反转(单个物品)。
Sample Input
1 | 6 |
Sample Output
1 | 4 6 4 5 6 6 |
标签:Splay
Solution
基础题。
将所有物品按照位置从小到大插入中,并维护每个结点及其子树中的最小值和最小值所在的结点指针。对于第次操作,在区间找出最小值所在的结点指针,查询其位置是多少,令其为,输出后反转区间即可。
注意这道题的物品大小有重复,需要先按照大小为第一关键字,位置为第二关键字离散化后再开始操作。
Code
1 |
|