두 사람이 음표를 순서대로 나누어 부를 때 각자가 부른 연속 음표 사이 음높이 차이의 합이 가장 작아지는 분할을 구합니다.
보통6동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한256 MB상덕이와 희원이는 함께 노래하는 일이 잦다. 어느 날 상덕이가 친구에게 선물 받은 악보를 가져왔다. 악보에는 노래에 필요한 음의 높이가 순서대로 N개 적혀 있다. 두 사람은 악보에 적힌 음을 모두 불러야 하고, 각 음은 둘 중 한 사람만 부른다. 예를 들어 악보가 {3, 6, 2, 5, 4}일 때 상덕이가 {3, 2, 4}를 부르면 희원이는 {6, 5}를 부르고, 상덕이가 {6, 2, 5}를 부르면 희원이는 {3, 4}를 부른다.
노래하는 도중에 음의 높이를 바꾸는 것은 힘들다. {4, 6}을 부르는 것은 {4, 4}를 부르는 것보다 음이 바뀌므로 더 힘들다. 한 사람이 부르는 음이 악보 순서대로 a1,a2,…,ak일 때 그 사람의 힘든 정도는 ∣a1−a2∣+∣a2−a3∣+⋯+∣ak−1−ak∣이다. 부르는 음이 하나뿐이거나 하나도 없으면 그 사람의 힘든 정도는 0이다. 악보 전체의 힘든 정도는 두 사람의 힘든 정도를 더한 값이다.
악보가 {1, 3, 8, 12, 13}이라고 하자. 앞의 두 음을 상덕이가, 뒤의 세 음을 희원이가 부르면 상덕이의 힘든 정도는 ∣1−3∣=2, 희원이의 힘든 정도는 ∣8−12∣+∣12−13∣=5이므로 합은 7이다. 어떻게 나눠도 7보다 작아지지 않는다.
악보가 주어질 때, 두 사람이 나눠 부르는 힘든 정도의 최솟값을 구하는 프로그램을 작성하라.
첫째 줄에 음의 개수 N (1 ≤ N ≤ 2,000)이 주어진다.
둘째 줄에 음의 높이 N개가 공백으로 구분되어 주어진다. 각 음의 높이는 1 이상 1,000,000 이하의 자연수이다.
두 사람이 악보를 나눠 부를 때 힘든 정도의 최솟값을 출력한다.