Baltic Olympiad in Informatics: 2007 Day 1, Problem 2
You are given the scores of several players in a competition. Your task is to create a ranklist of the players, sorted in decreasing order by score.
Unfortunately, the data structure used for the list of players supports only one operation, which
moves a player from position to position
without changing the relative order of other players. If
, the positions of players at positions between
and
increase by 1, otherwise if
the
positions of players at positions between
and
decrease by 1.
This operation takes steps to locate the player to be moved, and
steps to locate the position
where he or she is moved to, so the overall cost of moving a player from position
to position
is
. Here, positions are numbered starting with 1.
Determine a sequence of moves to create the ranklist such that the sum of the costs of the moves is minimized.
Input Specification
The first line contains
,
the number of players. Each of the following
lines contains one non-negative integer
,
the scores of the players in the current order. You may assume that all scores are distinct.
Output Specification
In the first line of the output print the
number of moves used to create the ranklist. The following lines should specify the moves in the
order in which they are applied. Each move should be described by a line containing two integers
and
, which means that the player at position
is moved to position
. The numbers
and
must be
separated by a single space.
Sample Input
5
20
30
5
15
10
Sample Output
2
2 1
3 5
Grading
30% of the test cases have values of .
Comments