分割可能ナップサック (Fractional Knapsack)
n 個の品物があり、それぞれの品物には重さと価値が定められています。容量 W のナップサックに品物を詰め込み、ナップサックの合計価値を最大化したいとします。このとき、品物を部分的に(ある割合だけ)取り出すことも可能で、その割合に比例して価値も変動します。
このナップサックに詰められる合計価値の最大値は、いくらになるでしょうか?
入力
最初の行には、品物の数を示す整数 n
(1 ≤ n ≤ ) と、ナップサックの容量を示す整数 W
(1 ≤ W ≤ ) が与えられます。
続く n
行では、各品物の重さと価値を表す整数 (1 ≤ , ≤ ) が、スペース区切りで与えられます。
出力
ナップサックに詰めたときの最大の合計価値を出力してください。
例
入力 | 出力 |
---|---|
3 50 | 240 |
4 60 | 440 |
説明
60 + 100 + (2/3)120 = 240
280 + 100 + (10/20)120 = 440
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB