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

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

소 고르게 배치하기

면접 대비

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

요약
소 N마리를 S개의 축사에 배치하되 인접한 소 사이 거리가 D 또는 D+1이 되고 D인 거리가 최대가 되도록 옮길 때, 처음 위치에서 이동한 총 거리의 최솟값을 구한다.
난이도

보통10점 중 7점

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

문제

농부 존은 11번부터 NN번까지 번호가 매겨진 젖소 NN마리를 기르고 있습니다. 새로 칠한 외양간에는 11번부터 SS번까지 번호가 매겨진 칸이 한 줄로 놓여 있으며, 이웃한 두 칸 사이의 거리는 모두 11입니다.

소들은 쉬려고 칸으로 들어갔습니다. ii번 소는 PiP_i번 칸에 있습니다. 소들은 서로 너무 가까이 있으면 예민해지기 때문에, 존은 소들을 최대한 넓게 퍼뜨리려고 합니다.

존은 인접한 두 소 사이의 N−1N-1개의 거리를 가능한 한 크게, 그리고 서로 비슷하게(거의 같은 간격으로) 만들고 싶어 합니다. 구체적으로 D=⌊(S−1)/(N−1)⌋D = \lfloor (S-1)/(N-1) \rfloor (정수 나눗셈)라고 할 때, 인접한 소 사이의 모든 거리는 DD와의 차이가 최대 11이어야 하며, 그중 정확히 DD와 같은 거리가 가능한 한 많아야 합니다.

예를 들어 소가 44마리이고 칸이 88개라면 소를 1,3,5,81, 3, 5, 8 또는 1,3,6,81, 3, 6, 8에 놓을 수는 있지만, 1,2,4,71, 2, 4, 7 이나 1,2,4,81, 2, 4, 8 에는 놓을 수 없습니다.

이렇게 소들을 배치하기 위해 소들이 움직여야 하는 최소 총 이동 거리를 구하세요. 소가 칸에 들어가고 나오는 거리는 무시합니다.

입력

  • 첫째 줄: 두 정수 NN 과 SS 가 공백으로 구분되어 주어집니다.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에 정수 PiP_i 가 하나씩 주어집니다.

제약: 2≤N≤15002 \le N \le 1500, N≤S≤1000000N \le S \le 1000000, 1≤Pi≤S1 \le P_i \le S.

출력

  • 첫째 줄에 소들이 움직여야 하는 최소 총 이동 거리를 정수 하나로 출력합니다. 이 값은 항상 1,000,000,000 미만이며 부호 있는 32비트 정수에 충분히 들어갑니다.

힌트

아래 그림은 소 55마리를 칸 1010개에 배치하는 상황(처음 위치 1,2,3,8,91, 2, 3, 8, 9)을 보여 줍니다.

               1   2   3   4   5   6   7   8   9  10
Cow Locs     | A | B | C | . | . | . | . | D | E | . |

소는 22번 칸에서 33번, 33번에서 55번, 99번에서 1010번으로 이동합니다. 총 이동 거리는 1+2+1=41 + 2 + 1 = 4 입니다. 소들의 최종 위치는 1,3,5,8,101, 3, 5, 8, 10번 칸입니다.

                 1   2   3   4   5   6   7   8   9  10
Init Stall     | A | B | C | . | . | . | . | D | E | . |
Final Stall    | A | . | B | . | C | . | . | D | . | E |
Distance moved | 0 | . | 1 | . | 2 | . | . | 0 | . | 1 |

예제1

  1. 예제 1

    입력
    5 10
    2
    8
    1
    3
    9
    
    예상 출력
    4