시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
한 개발자가 사용자의 점수를 내림차순으로 정렬해 순위를 보여 주는 기능을 만들고 있다.
점수가 저장된 자료구조에서 사용할 수 있는 연산은 하나뿐이다. 현재 i번째 사용자를 꺼내 현재 j번째 위치로 옮긴다. 이때 이동한 사용자를 제외한 다른 사용자들의 상대적인 순서는 바뀌지 않는다.
i > j이면 기존 j번째부터 i - 1번째까지의 사용자는 한 칸씩 뒤로 밀린다. i < j이면 기존 i + 1번째부터 j번째까지의 사용자는 한 칸씩 앞으로 당겨진다.
연산 한 번에서 이동할 사용자를 찾는 데 i단계, 옮길 위치를 찾는 데 j단계가 걸리므로, 현재 i번째 사용자를 현재 j번째 위치로 옮기는 비용은 i + j이다. 순위와 위치는 1부터 센다.
현재 자료구조에 저장된 점수가 주어졌을 때, 모든 사용자를 점수 내림차순으로 정렬하는 이동 순서 중 총비용이 최소인 순서를 구하시오.
첫째 줄에 저장된 점수의 수 n이 주어진다. (2 <= n <= 1000)
이어서 n개의 점수 s_i가 현재 자료구조에 저장된 순서대로 주어진다. (0 <= s_i <= 1,000,000)
두 점수가 같은 경우는 없다.
총비용이 최소가 되는 이동 순서 하나를 출력한다.
첫째 줄에 이동 횟수 k를 출력한다. 다음 k개의 줄에는 이동을 수행한 순서대로 두 정수 i와 j를 출력한다. 현재 i번째 점수를 현재 j번째 위치로 옮겼다면 i j를 출력한다.