떨어진 수정

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

어려움8이분 탐색게임 이론동적 계획법아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

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

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

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

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

입력

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

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

출력

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