U297804 2023“郡园杯”春季编程挑战活动E

题目描述

有两个长度为 $n$ 的序列 $A, B$。序列中的每个数字被选中后会得到这个数字,你可以分别从两个序列中取出若干数字(可以一个数也不选),从序列 $A,B$ 中分别取出的数字之和记为 $P,Q$。 每选一个数字需要花费 $k$ 的代价,所以当你从两个序列中总共取出 $S$ 个数字时,你的得分是 $\operatorname{min}\{P,Q\}-k\times S$。 求可能的最大得分。

输入格式

第一行输入两个正整数 $n$ 和 $k$,分别表示序列长度和选数字的代价。 接下来两行每行 $n$ 个实数,分别表示序列 $A$ 和序列 $B$ 中的值。

输出格式

输出一个实数,精确到小数点后五位,表示可以获得的最大分数值。

说明/提示

【样例解释】 对于样例 $1$,最优策略是将所有数字全部选出。 【测试点约束】 对于所有测试点:$1\leq n\leq 10^5$,$0\leq k\leq 10$,$0.0\leq$所有输入的实数$\leq 1000.0$。 每个测试点的具体限制见下表: | 测试点编号 | $n\leq$ | 特殊限制 | | :----------: | :----------: | :----------: | | $1$ | $10$ | $k=0$ | | $2$ | $10$ | 无 | | $3\sim 6$ | $10^3$ | 无 | | $7\sim 10$ | $10^5$ | 无 |