주가와 초당 수익, 그리고 보유한 주식이 자식 주식을 반값으로 지원하는 숲 구조가 주어질 때, 초당 수익이 P에 도달하는 최소 시간을 구한다.
어려움8그리디트리동적 계획법이분 탐색아직 제출이 없습니다시간 제한1초메모리 제한128 MB미르코는 주식을 사고파는 MMORPG 비트스톡에 푹 빠져 있다. 시장에는 정확히 N가지 주식이 있고, 미르코는 아무 때나 원하는 주식을 원하는 만큼 살 수 있다. i번 주식 한 주의 가격은 ci쿠나이고, 사는 순간부터 초당 gi쿠나를 벌어 준다. 주식은 실수 단위로도 살 수 있다. 다만 그 양은 양수여야 한다. 예를 들어 A 주식을 0.7주 사면 그 주식은 다음 0.3초 동안 0.21gA쿠나를 번다.
비트스톡의 특징은 어떤 주식이 다른 주식을 지원한다는 점이다. 지원받는 주식은 반값에 살 수 있다. A가 B와 C를 지원한다면, 가지고 있는 A 주식 1주로 B를 0.7주, C를 0.3주 반값에 살 수 있다. 이렇게 쓴 A 주식으로는 더 이상 다른 구매를 지원하지 못한다. 물론 그 주식은 계속 돈을 번다. 즉 가지고 있는 주식 1주는 자신이 지원하는 주식을 모두 합쳐 1주까지만 반값에 사게 해 준다. 반값에 산 주식도 똑같은 방식으로 자신이 지원하는 주식을 지원한다. 각 주식은 많아야 한 종류의 주식에게 지원받고, 직접이든 간접이든 자기 자신을 지원하지 않는다.
벌어들인 돈은 생기는 즉시 다시 주식을 사는 데 쓸 수 있다. 목표는 초당 P쿠나의 수익을 가장 짧은 시간 안에 만드는 것이다. 미르코는 처음에 E쿠나를 가지고 있고, 주식은 하나도 없다.
첫째 줄에 주식의 종류 수 N, 처음 가진 금액 E, 목표 수익률 P가 주어진다 (1≤N≤1000, 1≤E,P≤109).
다음 N개 줄의 i번째 줄에는 i번 주식의 가격 ci, 초당 수익 gi, 그리고 i번 주식을 지원하는 주식의 번호 pi가 주어진다 (1≤ci≤109, 0≤gi≤109, 0≤pi≤N). pi=0은 i번 주식을 지원하는 주식이 없다는 뜻이다. gi 중 적어도 하나는 양수다.
초당 P쿠나의 수익을 만드는 데 필요한 최소 시간을 초 단위로 출력한다. 값은 올림해서 정수로 적는다. 예를 들어 17.2초가 필요하면 18을 출력한다. 처음 가진 돈만으로 목표를 바로 달성하면 0을 출력한다.
정확한 최소 시간이 0이거나 모든 정수와 10−6 이상 차이가 나도록 입력이 주어진다.