#585. 徐老师的倒水计划plus

徐老师的倒水计划plus

说明

徐老师家里有 $n$ 个精致的玻璃杯,第 $i$ 个玻璃杯的容量为 $a_i$ 毫升,一开始装有 $b_i$ 毫升的水

最近徐老师学习了搜索的经典题目——《倒水》,于是他决定也把这些玻璃杯里的水倒一倒

但是显然,人的操作并没有办法达到题目中那么理想,在倒水的过程中还是会撒掉一部分水,这里我们简单的认为每次倒水会撒掉一半水

例如第 $x$ 个玻璃杯现在装有 $now_x$ 毫升水,第 $y$ 个玻璃杯装有 $now_y$ 毫升水

我们可以任意选择将 $x$ 杯中的 $z(z \leq b_x)$ 毫升水倒入 $y$ 杯中去

那么第 $x$ 个玻璃杯会剩下 $now_x - z$ 毫升水
而第 $y$ 个玻璃杯将会得到 $z / 2$ 毫升水,也就是最终 $y$ 玻璃杯中会有 $min(a_y, now_y + z / 2)$ 毫升水

现在徐老师想知道,如果他最后只选择 $m$ 个玻璃杯装水,其他玻璃杯全部倒空,怎么选这 $m$ 个玻璃杯可以使得水量最多?

输入格式

输入第一行包含一个整数 $n$ 表示玻璃杯数量

接下来 $n$ 行,每行两个整数 $a_i,b_i$,含义如题
| 测试点编号         | $n$         | 特殊性质          |
| :---: | :---: | :---: |
| $1 \sim 2$        | $n \leq 50$  |  $a_i=b_i$    |
| $3 \sim 4$        | $n \leq 20$  |      |
| $5 \sim 6$        | $n \leq 50$ | 答案一定为整数(例如 $10.0$) |
| $7 \sim 10$       | $n \leq 50$ |           |

对于 $100\%$ 的数据有:$1 \leq n \leq 50, 0 \leq b_i \leq a_i \leq 100$

输出格式

输出一行包含 $n$ 个实数,第 $i$ 个数字表示 $m = i$ 时能留下的最多水量,输出保留一位小数

样例

3
6 5
6 5
10 2
7.0 11.0 12.0