개의 정수로 이루어진 수열 가 있다. 이 수열을 의 순열로 바꾸고 싶다. 즉, 부터 까지의 수가 정확히 한번씩 등장하는 수열로 바꾸려는 것이다. 초기 수열에는 보다 큰 값이 등장할 수 있음에 유의하라.
이 목표를 위해 할 수 있는 작업은 임의의 위치의 값을 임의의 정수로 바꾸는 것이다. 단, 번째 값을 바꾸는 경우의 비용은 이다.
주어진 수열을 의 순열로 바꾸는 데 필요한 최소 비용을 계산하는 프로그램을 작성하라.
첫 줄에 수열의 크기를 나타내는 정수 이 주어진다. ()
그다음 줄에 수열의 정보를 나타내는 개의 정수 이 공백으로 구분되어 주어진다. ()
첫 줄에 주어진 수열을 의 순열로 바꾸는 데 필요한 최소 비용을 출력한다.
4 2 1 5 5
7
수열의 세 번째와 네 번째 값을 각각 과 로 바꾸면 된다. 이때, 비용은 이다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 31점
종류 2: 14점
종류 3: 17점
종류 4: 38점
추가적인 제한 조건이 없음.