Editorial for DMOPC '18 Contest 1 P3 - Sorting
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
For the first subtask, any standard sorting algorithm is enough to score full points.
Number of operations: or
For the second subtask, observe that the permutation can be modelled as a graph. Build an "edge" from each element to . After this is done, the permutation can be modelled as a set of disjoint cycles. Each shift operation performs a cyclic shift on some cycle so it takes exactly operation to sort a cycle. Because we only need to perform a shift operation on cycles of size greater than , there are at most such cycles. This is enough to score full points for the second subtask.
Number of operations:
For the final subtask, observe that the answer is always , , or .
If the permutation is initially sorted, the number of operations needed is .
If the permutation consists of exactly cycle, the number of operations needed is .
Suppose the permutation consists of cycles. Let the cycles be and their sizes be . Each cycle can be represented as .
The first shift operation is .
The second shift operation sorts each first element of each cycle after it was displaced in the first operation. So the second shift operation is .
Number of operations: , , or
Comments
Some people got 21 points on this problem by using swaps to sort the array.