luogu#P7650. [BalticOI 2007 Day 1] Ranklist Sorting
[BalticOI 2007 Day 1] Ranklist Sorting
题目描述
在一场比赛中,你会得到几名选手的分数。你的任务是创建一个按分数递减排序的选手的排名表。
不幸的是,用于选手排名表的数据结构仅支持一种操作,即在不改变其他玩家的相对顺序的情况下将玩家从位置 移动到位置 。如果 ,则 和 之间位置的玩家位置增加 ,否则如果 ,则 和 之间位置的玩家位置减少 。
这个操作需要 步来定位要移动的玩家, 步来定位他或她移动到的位置,所以将一个玩家从位置 移动到位置 的总成本是 。规定,位置从 开始编号。
确定一个步法序列来创建排名表,使步法的代价之和最小化。
输入格式
第一行包含整数 ,即玩家数量。
接下来的 行中的每一行都包含一个非负整数 ,即当前顺序中玩家的分数。您可以假设所有分数都是不同的。
输出格式
第一行输出用于创建排名表的移动次数。以下几行应按应用顺序指定移动,每次移动都应该用一行包含两个整数 和 来描述,表示位置 的玩家被移动到位置 。数字 和 必须用一个空格分隔。
5
20
30
5
15
10
2
2 1
3 5
提示
数据规模与约定
对于 的数据,,。
对于 的数据,,。
题目说明
来源于 Baltic Olympiad in Informatics 2007 的 Day 1:sorting。
由 @求学的企鹅 翻译整理。