설명
CPU가 각각 종류가 붙은 \(M\)개의 작업을 실행한다. 같은 종류의 두 실행 사이에는 적어도 \(C\)단위의 다른 시간(다른 작업 또는 유휴)이 있어야 한다. 각 단위에는 작업 하나를 실행하거나 유휴 상태가 된다. 최적으로 스케줄링할 때, 모든 작업을 끝내는 데 필요한 최소 유휴 단위 수를 출력하시오.
제약
입력 형식
첫 줄에 \(M\)과 \(C\)가 주어진다 (\(1 \le M \le 2000\), \(0 \le C \le 100\)). 둘째 줄에 \(M\)개의 정수가 주어지며 각각 \([1, 26]\)의 작업 종류이다.
출력 형식
최소 유휴 단위 수를 출력한다.
예제 1
입력
6 2
1 1 1 2 2 2
출력
2
예제 2
입력
6 0
1 1 1 2 2 2
출력
0
예제 3
입력
4 3
1 1 1 1
출력
9
문제 정보
riseoj 작성
출처 RiseOJ Basics
태그