웨딩 기차 춤

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

요약
N명의 하객을 한 줄로 세우면서 K명의 가족 구성원의 상대적 순서는 유지한 채 인접 키 차이의 합을 최소화하는 문제입니다.
난이도

어려움10점 중 8점

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

문제

슬라브코는 친구 미르코의 결혼식을 준비하고 있다.

결혼식의 하이라이트는 "기차"라고 불리는 인기 있는 단체 춤이다. 모든 하객이 한 줄로 앞뒤로 늘어서고, 맨 앞 사람을 제외한 모두가 바로 앞 사람의 어깨에 손을 얹은 채로 홀을 가로지르며 즐겁게 춤을 춘다.

슬라브코는 이 기차가 보기 좋기를 바란다. 서로 이웃한 두 사람의 키 차이가 크면 기차가 보기 좋지 않다. 그래서 그는 기차의 '어색함'을 이웃한 모든 쌍에 대한 키 차이의 절댓값의 합으로 정의한다.

미르코의 가족은 매우 보수적이어서, 기차의 어느 곳에서도 어떤 가족 구성원 앞에 그보다 더 어린 가족 구성원이 설 수 없다. 즉, 가족 구성원들은 기차를 따라 나이가 많은 사람부터 적은 사람 순서로 등장해야 한다(서로 붙어 있을 필요는 없다). 나머지 하객은 어디에 서도 상관없다.

모든 하객의 키와 미르코 가족의 나이 순서가 주어질 때, 가족의 나이 순서를 지키면서 이웃한 하객들의 키 차이 절댓값의 총합이 최소가 되도록 모든 사람을 한 줄의 기차로 배치하라.

입력

첫째 줄에 두 정수 NN과 KK가 공백으로 구분되어 주어진다 (1≤N≤100001 \le N \le 10000, 1≤K≤10001 \le K \le 1000, K≤NK \le N). NN은 하객의 총 수, KK는 미르코 가족의 수이다.

다음 NN개의 줄에는 각 하객의 키를 나타내는 정수 VV가 한 줄에 하나씩 주어진다 (1000≤V≤22001000 \le V \le 2200). 하객은 11번부터 NN번까지 번호가 매겨져 있으며, 처음 KK명이 미르코의 가족으로 나이가 많은 순서대로 나열되어 있다(11번 하객이 가장 나이가 많은 가족, KK번 하객이 가장 어린 가족). 따라서 기차에서 각 ii(1≤i≤K−11 \le i \le K-1)에 대해 가족 하객 ii는 가족 하객 i+1i+1보다 앞에 위치해야 한다.

출력

이웃한 하객들의 키 차이 절댓값의 총합이 최소가 되는 값을 정수 하나로 출력하라. 즉, 조건을 만족하는 모든 기차 배치 중에서 가능한 가장 작은 '어색함'의 값을 출력한다.

예제3

  1. 예제 1

    입력
    3 2
    2000
    1200
    1500
    
    예상 출력
    800
    
  2. 예제 2

    입력
    5 3
    1900
    1300
    1500
    1200
    1600
    
    예상 출력
    1000
    
  3. 예제 3

    입력
    6 3
    1700
    1900
    1500
    1800
    1750
    1300
    
    예상 출력
    800