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

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

탁구 팀 줄 세우기

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

요약
약한 학생부터 K명씩 순서대로 묶이도록 가장 적은 빼내어 끼워넣기로 줄을 다시 세웁니다.
난이도

보통10점 중 7점

유형
동적 계획법, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

자그레브 대학교 학생이 참가하는 탁구 팀 대회가 다음 주 토요일에 열린다. 한 팀은 학생 KK명으로 이루어지고, 참가 신청을 하려는 학생 NN명이 줄을 서 있다.

접수대에서 일하는 크레쇼는 일할 마음이 없어서 학생이 팀을 직접 고르지 못하게 했다. 줄 맨 앞의 KK명이 첫 번째 팀, 그다음 KK명이 두 번째 팀, 그다음 KK명이 세 번째 팀이 되는 식이다. NN은 KK로 나누어떨어지므로 팀에 들어가지 못하고 남는 학생은 없다.

안테는 학생마다 실력을 정수 하나로 매겨 두었다. 안테는 실력이 가장 낮은 KK명이 첫 번째 팀, 그다음으로 낮은 KK명이 두 번째 팀, 그다음으로 낮은 KK명이 세 번째 팀이 되기를 바란다. 줄의 앞에서 뒤로 갈수록 팀의 실력이 올라가야 한다는 뜻이다. 같은 팀에 들어갈 학생끼리는 줄에서 어떤 순서로 서 있어도 상관없다.

크레쇼가 잠시 쉬러 간 사이에 안테는 줄에 선 학생의 순서를 바꾸기로 했다. 안테는 학생 한 명에게 줄에서 나와 다른 학생 뒤에 다시 서라고 하거나 줄 맨 앞에 서라고 할 수 있고, 한 명을 이렇게 옮기는 데 1분이 걸린다.

크레쇼가 언제 돌아올지 모르니 안테는 목표를 최대한 빨리 이뤄야 한다. 안테가 목표를 이루는 데 필요한 최소 시간을 구하여라.

입력

첫째 줄에 정수 NN과 KK가 주어진다. (1≤K≤N≤5 0001 \le K \le N \le 5\,000) NN은 KK로 나누어떨어진다.

둘째 줄에 정수 v1,v2,…,vNv_1, v_2, \dots, v_N이 공백으로 구분되어 주어진다. (1≤vi≤1091 \le v_i \le 10^9) viv_i는 줄에서 ii번째에 선 학생의 실력이다.

모든 참가자의 실력은 서로 다르다.

출력

첫째 줄에 필요한 최소 시간을 분 단위로 출력한다.

힌트

학생이 6명이고 KK가 3인 예제에서 안테는 실력이 5, 6, 3인 학생을 줄 맨 앞으로 옮기면 된다. 3분이 걸린다.

예제3

  1. 예제 1

    입력
    4 1
    9 12 5 13
    
    예상 출력
    1
    
  2. 예제 2

    입력
    6 2
    16 2 1 7 5 10
    
    예상 출력
    1
    
  3. 예제 3

    입력
    6 3
    7 9 8 3 6 5
    
    예상 출력
    3