#icpc2014autumnd. [icpc2014autumn_d]Flowers

[icpc2014autumn_d]Flowers

问题描述

我们种植了N颗花种子,每颗花种子都会长成不同的花。我们希望所有花一起开放。

每棵植物都有一个名为"活力"的值,初始值为零。浇水和施肥会对其产生变化,如果第i棵植物的活力大于或等于𝑡h_i,则该植物会开花。请注意,𝑡h_i可能为负数,因为一些花不需要额外的营养。

浇水对所有植物都有影响。用W升水浇灌植物会使第i棵植物的活力增加W×v𝑤_i(i=1到n),并且需要花费W×p𝑤日元,其中W不必是整数。𝑣w_i可能为负数,因为一些花不喜欢水。

我们有N种肥料,第i种肥料仅对第i棵植物有效。撒布F_i千克第i种肥料可以使第i棵植物的活力增加F_i×v𝑓_i,并且需要花费F_i×p𝑓_i日元,其中F_i也不必是整数。由于每种肥料都是特别为相应的植物制作的,因此保证𝑣f_i为正数。

当然,我们也希望将成本最小化。形式上,我们的目的是"在满足𝑤×v𝑤_i+F_i×v𝑓_i≥𝑡h_i,𝑤≥0,F_i≥0(i=1到N)"的情况下最小化W×p𝑤+Σ𝑖=1->𝑁(F_i×p𝑓_i)"。您的任务是计算最小成本。

输入

输入包含多个数据集。数据集的数量不超过100个,输入数据的大小不超过20MB。每个数据集格式如下。

N
p𝑤
v𝑤_1 p𝑓_1 v𝑓_1 𝑡h_1
:
:
v𝑤_N p𝑓_N v𝑓_N 𝑡h_N

数据集的第一行包含一个整数N,表示花种子的数量。数据集的第二行包含一个整数p𝑤,表示一升水的费用。接下来的N行描述了每朵花。第𝑖行包含四个整数v𝑤_i, p𝑓_i, v𝑓_i和𝑡h_i,由空格分隔。

可以假设1≤N≤10^5,1≤p𝑤≤100,-100≤v𝑤_i≤100,1≤p𝑓_i≤100,1≤v𝑓_i≤100,-100≤𝑡h_i≤100。

输入的结束由一行包含零表示。

输出

对于每个数据集,输出一行,其中包含使所有花开放所需的最小成本。输出的绝对误差或相对误差不得超过10^{-4}。

样例输入

3
10
4 3 4 10
5 4 5 20
6 5 6 30
3
7
-4 3 4 -10
5 4 5 20
6 5 6 30
3
1
-4 3 4 -10
-5 4 5 -20
6 5 6 30
3
10
-4 3 4 -10
-5 4 5 -20
-6 5 6 -30
0```

### 样例输出

```plain
43.5
36
13.5
0```