개의 항을 가진 수열 가 있다. 각 항에 을 더하거나 빼는 연산을 수행할 수 있다. 단, 이 연산은 항 하나에 최대 한 번만 적용 가능하다. 즉, 의 번째 항의 값이 초기에 로 주어졌다면, 최종적으로 번째 항의 값은 연산을 수행하지 않은 경우에는 , 연산을 수행한 경우에는 혹은 중 하나가 가능하다.
최소한의 연산으로 수열 가 공차 인 등차수열이 되도록 만드는 프로그램을 작성하라.
여기서 공차 인 등차수열이라 함은, 인 모든 정수 에 대해, 번째 항 에서 번째 항 를 뺀 값이 임을 뜻한다.
첫 줄에 수열의 길이를 나타내는 정수 이 주어진다. ()
그다음 줄에 수열의 개의 항의 초깃값이 공백으로 구분되어 차례대로 주어진다. 이 값은 모두 이상 이하의 정수다.
항상 연산을 적절히 사용하여 공차 인 등차수열을 만들 수 있는 경우만 입력으로 주어진다.
첫 줄에 최소 연산 횟수를 출력한다.
5 1 3 4 5 5
2
한 번의 연산으로 수열의 첫 번째 값을 로 바꾸고, 또 한 번의 연산으로 수열의 마지막 값을 으로 바꾸는 것이 최적이다. 이 경우, 최종적으로 수열은 이 된다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 34점
수열의 항의 초깃값은 모두 이하.
종류 2: 25점
종류 3: 41점
모든 입력 케이스가 주어짐.