아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

요트 경주

면접 대비

시간 제한1초메모리 제한128 MB

요약
직선 위에 놓인 표지판들의 위치가 주어질 때, 이전 표지판에서의 거리를 누적해 더한 합이 최소가 되는 방문 순서를 찾는다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 정렬, 구간
정답자
아직 제출이 없습니다

문제

곧 열릴 요트 대회를 위해 조직위원회가 경기를 더 까다롭게 만드는 새로운 방식을 고안했다. 바다 위 한 직선을 따라 여러 개의 부표(표지)가 서로 다른 거리에 놓여 있다. 모든 보트는 이 직선 위의 특정한 한 지점에서 동시에 출발하여 모든 표지를 방문해야 한다. 모든 표지를 방문하면 그 보트의 경기는 끝난다. 우승하려면 모든 표지를 방문하면서 누적 거리의 합을 최소로 만들어야 한다.

첫 번째로 방문한 표지의 누적 거리는 그 표지가 출발 지점으로부터 떨어진 거리이다. 이후에 방문하는 표지의 누적 거리는 바로 직전에 방문한 표지까지의 거리에 그 직전 표지의 누적 거리를 더한 값이다.

출발 표지는 00으로 표시한다. 출발 지점의 오른쪽에 있는 표지는 출발 지점으로부터의 거리만큼 양의 정수로, 왼쪽에 있는 표지는 음의 정수로 표시한다. 예를 들어 표지가 {−3,1,5}\{-3, 1, 5\} 위치에 있을 때, 방문 순서 {−3,1,5}\{-3, 1, 5\}에 대한 누적 거리의 합은 3+(4+3)+(4+7)=213 + (4 + 3) + (4 + 7) = 21이다(이는 특정한 한 순서에 대해 누적 거리를 계산하는 방법을 보여줄 뿐이며, 반드시 최솟값인 것은 아니다).

주어진 표지들의 위치를 읽어, 가능한 모든 방문 순서 중 누적 거리의 합의 최솟값을 출력하는 프로그램을 작성하라.

그림

또 다른 예로, 표지가 {−9,−6,−5,−2,1,3,4,10}\{-9, -6, -5, -2, 1, 3, 4, 10\}일 때 방문 순서 {1,3,4,10,−2,−5,−6,−9}\{1, 3, 4, 10, -2, -5, -6, -9\}의 누적 거리 합은 1+3+4+10+22+25+26+29=1201 + 3 + 4 + 10 + 22 + 25 + 26 + 29 = 120이고, 가장 좋은 순서 {1,3,4,−2,−5,−6,−9,10}\{1, 3, 4, -2, -5, -6, -9, 10\}의 누적 거리 합은 1+3+4+10+13+14+17+36=981 + 3 + 4 + 10 + 13 + 14 + 17 + 36 = 98이다.

입력

첫째 줄에 방문해야 하는 표지의 개수 LL (1≤L≤2001 \le L \le 200)이 주어진다. 출발 표지는 포함하지 않는다.

둘째 줄에 LL개의 표지 위치가 증가하는 순서로 주어진다(출발 표지는 제외한다). 각 위치는 [−700,700][-700, 700] 범위의 정수이다.

출력

모든 방문 순서 중 누적 거리 합의 최솟값을 양의 정수 하나로 출력한다.

예제4

  1. 예제 1

    입력
    8
    -9 -6 -5 -2 1 3 4 10
    
    예상 출력
    98
    
  2. 예제 2

    입력
    1
    5
    
    예상 출력
    5
    
  3. 예제 3

    입력
    1
    -7
    
    예상 출력
    7
    
  4. 예제 4

    입력
    3
    -3 1 5
    
    예상 출력
    19