W*pw + ΣF_i*pf_i를 최소로 하면서 W*vw_i + F_i*vf_i ≥ th_i, W,F_i ≥ 0을 만족시키는 최소 비용을 구한다.
보통7수학그리디기하아직 제출이 없습니다시간 제한8초메모리 제한512 MB꽃씨 N개를 심었고, 씨앗마다 서로 다른 꽃이 핀다. 이 꽃을 모두 한꺼번에 피우려고 한다.
각 그루에는 활력이라는 값이 있고 처음에는 0이다. 물을 주거나 비료를 뿌리면 활력이 바뀌며, i번째 그루는 활력이 thi 이상이 되면 꽃이 핀다. 영양이 더 필요 없는 꽃도 있어서 thi는 음수일 수 있다.
물은 모든 그루에 닿는다. 물을 W리터 주면 모든 i(1≤i≤N)에 대해 i번째 그루의 활력이 W×vwi만큼 바뀌고, 비용은 W×pw엔이다. W는 정수가 아니어도 된다. 물을 싫어하는 꽃도 있어서 vwi는 음수일 수 있다.
비료는 N종류가 있고, i번째 비료는 i번째 그루에만 작용한다. i번째 비료를 Fi킬로그램 뿌리면 i번째 그루의 활력이 Fi×vfi만큼 바뀌고, 비용은 Fi×pfi엔이다. Fi도 정수가 아니어도 된다. 비료는 그루마다 따로 만들었으므로 vfi는 항상 양수이다.
물론 비용도 최대한 줄이고 싶다. 정리하면, 모든 i(1≤i≤N)에 대해 W×vwi+Fi×vfi≥thi, W≥0, Fi≥0을 지키면서
W×pw+∑i=1NFi×pfi
를 최소로 만들어야 한다. 이 최소 비용을 구하라.
입력은 여러 개의 데이터셋으로 이루어진다. 데이터셋은 100개를 넘지 않고, 입력 전체 크기는 20MB를 넘지 않는다. 데이터셋 하나의 형식은 다음과 같다.
N
pw
vw1 pf1 vf1 th1
:
:
vwN pfN vfN thN
첫째 줄에 꽃씨의 개수 N이 주어진다. 둘째 줄에 물 1리터의 가격 pw가 주어진다. 이어지는 N개 줄에는 꽃 하나를 나타내는 네 정수 vwi, pfi, vfi, thi가 공백으로 구분되어 주어진다.
모든 값은 1≤N≤100000, 1≤pw≤100, −100≤vwi≤100, 1≤pfi≤100, 1≤vfi≤100, −100≤thi≤100을 만족한다.
입력의 끝은 0 하나만 있는 줄로 표시된다.
각 데이터셋마다 모든 꽃을 피우는 최소 비용을 한 줄에 출력한다. 소수점 아래 여섯째 자리까지 출력하고, 일곱째 자리부터는 반올림한다.