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

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

패스트푸드

면접 대비

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

요약
정렬된 식당 위치가 주어질 때, k개의 식당을 창고로 정해 모든 식당에서 가장 가까운 창고까지 거리의 합을 최소로 만든다.
난이도

보통10점 중 7점

유형
동적 계획법, 분할 정복, 이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

패스트푸드 체인 McBurger는 고속도로를 따라 여러 개의 음식점을 운영하고 있으며, 그중 일부 음식점의 위치에 물류 창고를 지어 나머지 음식점에 재료를 공급하려고 한다. 창고는 각 음식점과 그 음식점이 배정된 창고 사이의 거리 합이 최소가 되도록 배치해야 한다.

고속도로 위 nn개 음식점의 위치가 정수 d1<d2<⋯<dnd_1 < d_2 < \dots < d_n로 주어진다(같은 고속도로 위의 한 기준점으로부터의 거리이다). 또한 지을 창고의 개수 kk (k≤nk \le n)가 주어진다.

kk개의 창고는 서로 다른 kk개 음식점의 위치에 지어지며, 각 음식점은 가장 가까운 창고에 배정된다. 이때 전체 거리 합

∑i=1n∣di−p(i)∣\sum_{i=1}^{n} \left| d_i - p(i) \right|

을 최소로 만들어야 한다. 여기서 p(i)p(i)는 음식점 ii를 담당하는 창고의 위치이다. 가능한 최소 전체 거리 합을 구하여라.

입력

입력은 여러 개의 체인에 대한 정보를 담고 있다. 각 체인은 두 정수 nn과 kk가 적힌 줄로 시작하며, 1≤n≤2001 \le n \le 200, 1≤k≤301 \le k \le 30, k≤nk \le n을 만족한다. 이어지는 nn개의 줄에는 음식점의 위치 did_i가 오름차순으로 한 줄에 하나씩 주어진다.

입력의 끝은 첫 줄이 0 0인 체인으로 표시되며, 이 체인은 처리하지 않는다.

출력

각 체인에 대해 주어진 순서대로 Chain i: S 형식의 한 줄을 출력한다. 여기서 i는 체인의 1부터 시작하는 번호이고, S는 가능한 최소 전체 거리 합이다. 끝을 나타내는 0 0 체인은 아무것도 출력하지 않는다.

예제2

  1. 예제 1

    입력
    6 3
    5
    6
    12
    19
    20
    27
    0 0
    
    예상 출력
    Chain 1: 8
    
  2. 예제 2

    입력
    3 1
    1
    2
    3
    2 1
    10
    20
    0 0
    
    예상 출력
    Chain 1: 2
    Chain 2: 10