만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

서버 증설 계획

면접 대비

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

요약
정렬된 요청 시각이 주어질 때 1000ms 작업을 서버당 최대 k개까지 겹쳐 처리하는 최소 서버 수를 구합니다.
난이도

쉬움10점 중 3점

유형
슬라이딩 윈도우, 구간
정답자
아직 제출이 없습니다

문제

얼마 전 시스템이 멈춘 원인을 조사한 결과, 밀려드는 요청을 감당하지 못하고 과부하가 걸린 것으로 드러났다. 서버를 더 붙이면 동시에 처리하는 요청 수가 늘어나지만, 여태 미루기만 했다. 이제는 정말 필요한 만큼 서버를 늘리려고 한다.

앞으로 들어올 요청을 예측하려고 고객들에게 사용 계획을 물었더니, 앞으로 보낼 모든 요청의 정확한 시각을 그대로 알려 주었다. 그래서 다가올 요청 nn개의 시각을 밀리초 단위로 정리했다.

요청이 들어오면 곧바로 서버 하나로 보내지고, 처리를 미룰 수 없다. 처리에는 정확히 1000밀리초가 걸린다. 즉 시각 tt에 도착한 요청은 tt부터 t+1000t + 1000 직전까지 서버를 붙잡고 있고, 시각 t+1000t + 1000에는 이미 손을 뗀 상태다.

서버 한 대는 동시에 최대 kk개의 요청을 처리한다. 이 조건에서 시스템이 다시 멈추지 않게 하려면 서버가 최소 몇 대 필요한지 구하라.

입력

첫째 줄에 다가올 요청의 수 nn과 서버 한 대가 동시에 처리하는 요청 수 kk가 주어진다. (1≤n≤1000001 \le n \le 100000, 1≤k≤1000001 \le k \le 100000)

다음 nn개 줄에 각 요청의 시각 tit_i가 한 줄에 하나씩 주어진다. (0≤ti≤1000000 \le t_i \le 100000) 시각은 고객에게 연락한 순간을 기준으로 한 밀리초 단위이며, 시간 순으로 정렬되어 있다. 같은 시각에 여러 요청이 들어오기도 한다.

출력

모든 요청을 처리해 시스템이 다시 멈추지 않게 하는 데 필요한 서버의 최소 개수를 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    2 1
    0
    1000
    
    예상 출력
    1
    
  2. 예제 2

    입력
    3 2
    1000
    1010
    1999
    
    예상 출력
    2
    
  3. 예제 3

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

    입력
    4 1
    0
    1000
    2000
    3000
    
    예상 출력
    1
    
  5. 예제 5

    입력
    10 3
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    예상 출력
    4