작업 스케줄링

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

문제

어떤 엔지니어링 기관이 앞으로 $N$일 동안 처리해야 할 작업 요청 $M$개를 받았다. 작업 하나를 처리하는 데에는 기계 한 대가 정확히 하루 걸린다. 이 기관은 성능이 동일한 기계 여러 대를 보유하고 있으며, 각 기계는 하루에 최대 한 개의 작업만 처리할 수 있다. 따라서 하루에 처리할 수 있는 작업 수는 보유한 기계 수를 넘을 수 없다.

이 기관은 최대 $D$일의 지연을 허용한다. 즉, 어떤 요청이 $S$일에 제출되었다면 늦어도 $S + D$일까지는 완료되어야 한다. 다시 말해, $S$일에 제출된 요청은 $S, S+1, \ldots, S+D$일 중 어느 하루에 처리할 수 있다.

모든 작업을 허용된 지연 안에 처리하기 위해 필요한 기계의 최소 개수를 구하여라.

입력

첫째 줄에 세 정수 $N$, $D$, $M$이 주어진다. $N$ ($1 \le N \le 100000$)은 작업을 처리하는 일수, $D$ ($0 \le D < N$)는 허용되는 최대 지연 일수, $M$ ($1 \le M \le 1000000$)은 작업 요청의 개수이다.

둘째 줄에는 $M$개의 정수가 공백으로 구분되어 주어진다. $i$번째 정수는 $i$번 요청이 제출된 날짜이며, 모든 제출 날짜는 $1$ 이상 $N - D$ 이하이다($N - D$일 이후에는 어떤 요청도 제출되지 않는다).

출력

최대 $D$일의 지연 안에 모든 작업 요청을 처리하기 위해 필요한 기계의 최소 개수를 정수 하나로 출력한다.