병력 동원
면접 대비시간 제한2초메모리 제한512 MB
예산 안에서 병종을 소수 단위로 사들여 총 체력과 총 위력의 곱을 최대화합니다.
문제
Mobilization은 병력을 동원하는 새로운 전략 게임이다. 병력은 여러 종류의 부대로 구성할 수 있으며, 각 부대 종류마다 비용, 체력, 전투력이 정해져 있다. 가진 예산을 넘지 않는 선에서 각 부대 종류를 임의의 조합으로, 심지어 소수 단위로도 구매할 수 있다. 병력의 효율은 총 체력과 총 전투력의 곱으로 정의된다. 주어진 예산 제약 아래에서 얻을 수 있는 최대 효율은 얼마인가?
원하는 만큼 구매할 수 있을 정도로 부대가 항상 충분히 남아 있다고 가정해도 된다(총 예산 제약 내에서).
입력
첫 줄에 부대 종류의 수를 나타내는 정수 n(1 ≤ n ≤ 30 000)과 사용할 수 있는 총 예산 b(1 ≤ b ≤ 100 000)가 주어진다.
이어서 n개의 줄에 각 부대 종류의 값 세 개가 주어진다. 부대 하나당 비용 c(1 ≤ c ≤ 100 000, 정수), 부대 하나당 체력 h(0 ≤ h ≤ 1, 실수), 부대 하나당 전투력 p(0 ≤ p ≤ 1, 실수)이다. 실수는 소수점 아래 최대 20자리까지 주어질 수 있다.
출력
가능한 최대 효율을 한 줄에 출력한다. 상대 오차 또는 절대 오차가 0.005 미만이면 정답으로 인정된다.