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

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

우체국

면접 대비

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

요약
직선 위 V개 마을 중 P곳에 우체국을 세워 모든 마을에서 가장 가까운 우체국까지의 거리 합이 최소가 되도록 정한다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 정렬, 분할 정복
정답자
아직 제출이 없습니다

문제

곧게 뻗은 고속도로를 따라 여러 마을이 있다. 고속도로는 정수 좌표 축으로 나타내며, 각 마을은 서로 다른 하나의 정수 좌표 위에 있다. 같은 위치에 있는 두 마을은 없다. 두 위치 사이의 거리는 두 좌표의 차의 절댓값이다.

전체 마을 중 일부(반드시 전부는 아니다)에 우체국을 세운다. 우체국은 그것이 세워진 마을과 같은 위치에 있다. 각 마을에서 가장 가까운 우체국까지의 거리의 총합이 최소가 되도록 우체국들의 위치를 정한다.

마을들의 위치와 세울 우체국의 개수가 주어질 때, 각 마을에서 가장 가까운 우체국까지의 거리의 합이 가질 수 있는 최솟값을 구하는 프로그램을 작성하라.

입력

첫째 줄에 두 정수 VV와 PP가 주어진다. VV는 마을의 수로 1≤V≤3001 \le V \le 300이고, PP는 우체국의 수로 1≤P≤301 \le P \le 30이며 P≤VP \le V이다. 둘째 줄에는 마을들의 위치를 나타내는 VV개의 정수가 증가하는 순서로 주어진다. 각 위치 XX는 1≤X≤100001 \le X \le 10000을 만족한다.

출력

각 마을에서 가장 가까운 우체국까지의 거리의 합의 최솟값을 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    10 5
    1 2 3 6 7 9 11 22 44 50
    
    예상 출력
    9
    
  2. 예제 2

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

    입력
    1 1
    7
    
    예상 출력
    0