작업 스케줄링

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

요약
제출일로부터 D일 이내에 하루씩 처리해야 하는 M개의 작업을 N일 동안 처리하기 위해 필요한 최소 기계 수를 구하는 문제입니다.
난이도

보통10점 중 7점

유형
그리디, 이분 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

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

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

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

입력

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

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

출력

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

예제5

  1. 예제 1

    입력
    8 2 12
    1 2 4 2 1 3 5 6 2 3 6 4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    1 0 1
    1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    3 0 5
    2 2 2 2 2
    
    예상 출력
    5
    
  4. 예제 4

    입력
    5 2 5
    1 1 1 1 1
    
    예상 출력
    2
    
  5. 예제 5

    입력
    5 0 5
    1 2 3 4 5
    
    예상 출력
    1