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

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

소들의 자동차

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

요약
소들을 M개의 차선에 배치해 각 소의 속도에서 같은 차선 앞차 수 곱하기 D를 뺀 값이 L 이상이 되도록 하면서, 도로를 이용하는 소의 수를 최대로 구한다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

NN마리(1≤N≤500001 \le N \le 50000)의 소가 11번부터 NN번까지 번호를 달고, 각자 자동차를 몰고 고속도로를 달린다. 고속도로에는 MM개(1≤M≤N1 \le M \le N)의 차선이 있으며, 모든 소는 어느 차선이든 선택할 수 있다. ii번 소의 최고 속도는 SiS_i(1≤Si≤10000001 \le S_i \le 1000000) km/h이다.

충돌을 피하기 위해, ii번 소는 같은 차선에서 자기 앞에 있는 소 한 마리당 속도를 DD(0≤D≤50000 \le D \le 5000) km/h씩 줄인다. 따라서 같은 차선에서 ii번 소 앞에 KK마리의 소가 있으면, 이 소는 max⁡(Si−D⋅K,0)\max(S_i - D \cdot K, 0) km/h로 달린다. 소들은 이렇게 속도를 줄이면 충돌이 일어나지 않을 만큼 충분히 떨어져 있다.

최저 속도 법에 따라 고속도로 위의 모든 소는 최소 LL(1≤L≤10000001 \le L \le 1000000) km/h 이상으로 달려야 하므로, 일부 소는 고속도로를 이용하지 못할 수도 있다. 최저 속도 법을 지키면서 고속도로를 달릴 수 있는 소의 최대 마릿수를 구하여라.

입력

  • 첫째 줄: 공백으로 구분된 네 정수 NN, MM, DD, LL.
  • 22번째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에는 ii번 소의 최고 속도 SiS_i가 하나의 정수로 주어진다.

출력

  • 고속도로를 이용할 수 있는 소의 최대 마릿수를 나타내는 정수 하나를 출력한다.

힌트

소가 세 마리, 차선이 하나, 소 한 마리당 감속량이 11, 최저 속도가 55일 때, 최대 두 마리가 달릴 수 있다. 속도가 55인 소를 맨 앞에 두면 그대로 55로 달리고, 속도가 77인 소를 두 번째에 두면 7−1=67 - 1 = 6으로 달리므로, 두 소 모두 최저 속도 55를 만족한다.

예제1

  1. 예제 1

    입력
    3 1 1 5
    5
    7
    5
    
    예상 출력
    2