만드는 중입니다

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

떨어진 수정

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

요약
서로 다른 강도를 가진 N개의 수정 중 K번째로 강한 응축 마나 수정을 폭발 위험 없이 부수기 위해 필요한 최악의 경우 타격 횟수를 최소화하는 전략을 구합니다.
난이도

어려움10점 중 8점

유형
이분 탐색, 게임 이론, 동적 계획법
정답자
아직 제출이 없습니다

문제

마나 수정 MM개가 신 나무스트럼에 떨어졌다. 수정이 떨어진 뒤 시체가 되살아나 마을을 덮쳤고, 마을의 수장 Marko는 시체를 되살린 마법사 Kul'den을 사로잡았다. 심문 결과 MM개의 마나 수정이 되살아난 시체에게 마나를 공급하고 있으며, 수정을 모두 파괴하면 시체가 멈춘다는 사실이 드러났다. 마을에는 둔 망치가 있고, 이 망치는 한 번에 마나 수정 하나에만 힘을 가한다.

Marko가 수정을 하나씩 부수던 도중 큰 폭발이 일어났다. 대 마법사 매디브가 원인을 분석해서, 마나가 크게 응집된 수정을 부수는 데 필요한 힘보다 훨씬 강한 힘으로 내리치면 응집된 마나가 과부하를 일으켜 폭발한다는 것을 밝혀냈다. 샤먼 타사다르는 남은 수정 NN개를 감정해서, 그중 정확히 하나에만 마나가 응집되어 있고 그 수정이 NN개 가운데 KK번째로 강하다는 사실을 알아냈다. 즉 응집된 수정보다 강한 수정이 K−1K-1개, 약한 수정이 N−KN-K개 있다. 남은 수정의 강도는 모두 다르고 강도의 순서도 전부 알고 있지만, 강도의 실제 값은 아무도 모른다.

각 수정의 강도는 서로 다른 양의 실수이고 모두 PP 이하이다. 대장장이 린드홀은 PP 이하의 양의 실수 pp를 마음속으로 정하면 수정에 정확히 pp의 힘을 가할 수 있다. 강도가 XX인 수정을 XX 이상의 힘으로 내리치면 그 수정은 부서져 사라지고, 사라진 수정은 다시 내리칠 수 없다. XX 미만의 힘으로 내리치면 아무 일도 일어나지 않는다. 마나가 응집된 수정만은 예외로, 강도보다 WW 이상 강한 힘, 즉 X+WX + W 이상의 힘으로 내리치면 폭발한다.

당신은 린드홀에게 몇 번째로 강한 수정을 얼마의 힘으로 내리칠지 한 번에 하나씩 명령하고, 그 수정이 부서졌는지 아닌지는 바로 알 수 있다. 폭발이 일어날 가능성이 조금이라도 있는 명령은 내릴 수 없다. 강도가 어떻게 정해져 있든 폭발 없이 응집된 수정을 반드시 부수면서, 내리치는 횟수의 최댓값을 가장 작게 만드는 전략을 쓰려고 한다. 이 전략을 썼을 때 최악의 경우 망치를 내리치는 횟수를 구하여라.

입력

첫째 줄에 정수 NN, KK, PP, WW가 공백으로 구분되어 주어진다. 차례대로 남아 있는 마나 수정의 수 NN, 마나가 응집된 수정의 강도 순위 KK, 둔 망치의 최대 파워 PP, 폭발이 일어나는 힘의 차이 WW를 뜻한다. (1≤N≤10001 \le N \le 1000, 1≤K≤N1 \le K \le N, 1≤P≤20001 \le P \le 2000, 1≤W≤P1 \le W \le P)

조건을 만족하도록 각 수정의 강도를 정할 수 없는 입력은 주어지지 않는다.

출력

최악의 경우 내리치는 횟수를 최소로 만드는 전략을 썼을 때, 마나가 응집된 수정이 부서질 때까지 망치를 내리치는 최대 횟수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    2 1 90 25
    
    예상 출력
    4
    
  2. 예제 2

    입력
    5 3 100 25
    
    예상 출력
    4