儿童戏水池是一个大容器,你可以往里面注水,供小孩玩耍。
你有 $N$ 个不同的水源。第 $i$ 个水源的出水速率为 $R_i$,水温为 $C_i$。初始时,所有水源均处于关闭状态。每个水源只能开启一次,也只能关闭一次;开启或关闭水源的操作不需要额外时间。多个水源可以同时开启。
你的水池容量无限,但你希望以最快的速度将水池注满体积恰好为 $V$、温度恰好为 $X$ 的水。如果最优地控制水源的开启和关闭(不一定需要使用所有水源),那么注满水池所需的最少秒数是多少?
在本题中,将体积为 $V_0$、温度为 $X_0$ 的水与体积为 $V_1$、温度为 $X_1$ 的水混合,会瞬间产生体积为 $V_0+V_1$、温度为 $(V_0X_0 + V_1X_1) / (V_0+V_1)$ 的水。例如,将 5L 温度为 10 度的水与 10L 温度为 40 度的水混合,将得到 15L 温度为 30 度的水。此外,假设水在混合之外的时间内不会发生加热或冷却。
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含三个空格分隔的数字:整数 $N$,以及如上所述的实数 $V$ 和 $X$。
接下来的 $N$ 行,每行包含两个空格分隔的实数 $R_i$ 和 $C_i$,分别表示第 $i$ 个水源的出水速率和温度。体积单位为升,出水速率单位为升每秒,温度单位为摄氏度。
所有实数均精确到小数点后四位。
输出格式
对于每个测试用例,输出一行 "Case #x: y",其中 $x$ 是测试用例编号(从 1 开始),$y$ 是将儿童戏水池注满所需的最少秒数。如果给定输入无法达到要求,则 $y$ 应为字符串 IMPOSSIBLE。
如果 $y$ 与正确答案的绝对误差或相对误差在 $10^{-6}$ 以内,则视为正确。有关误差的解释以及我们接受的实数格式,请参阅 FAQ。你也可以在那里阅读关于我们输入实数格式的信息,其中小数点由字符 . 表示。
数据范围
$1 \le T \le 100$。 $0.1 \le X \le 99.9$。 $0.1 \le C_i \le 99.9$。
小数据范围
$1 \le N \le 2$。 $0.0001 \le V \le 100.0$。 $0.0001 \le R_i \le 100.0$。
大数据范围
$1 \le N \le 100$。 $0.0001 \le V \le 10000.0$。 $0.0001 \le R_i \le 10000.0$。
样例
样例输入 1
6 1 10.0000 50.0000 0.2000 50.0000 2 30.0000 65.4321 0.0001 50.0000 100.0000 99.9000 2 5.0000 99.9000 30.0000 99.8999 20.0000 99.7000 2 0.0001 77.2831 0.0001 97.3911 0.0001 57.1751 2 100.0000 75.6127 70.0263 75.6127 27.0364 27.7990 4 5000.0000 75.0000 10.0000 30.0000 20.0000 50.0000 300.0000 95.0000 40.0000 2.0000
样例输出 1
Case #1: 50.0000000 Case #2: 207221.843687375 Case #3: IMPOSSIBLE Case #4: 0.500000000 Case #5: 1.428034895 Case #6: 18.975332068
说明
注意:样例 6 不在小数据范围的限制内。
在样例 1 中,唯一可用的水源温度恰好是我们需要的温度。最优策略是立即开启它,直到注满 10L 水。由于每秒流出 0.2L,这需要 50 秒。
在样例 2 中,一种最优策略是开启第一个水源并让它运行 207221.843687375 秒,然后在结束前约 0.092778156 秒开启第二个水源。
在样例 3 中,所有可用的水源温度都低于目标温度,因此无法达到目标。