#CF2143B. 折扣
折扣
B. 折扣
时间限制: 每测试 秒
内存限制: 每测试 兆字节
你想购买 个商品,价格分别为 。你可以选择以下方式之一购买:
- 单独购买商品 ,支付 枚硬币;或者
- 使用折扣券以团购方式购买。
你有 张折扣券,面值分别为 。一张面值为 的折扣券允许你选择恰好 个商品,并且仅支付其中 个最贵的商品,因此你可以认为团购中最便宜的那个商品是免费的。每个商品最多只能被包含在一个折扣组中,即使它不是免费的那个商品。此外,任何一张折扣券最多只能使用一次。
购买所有 个商品所需的最小总花费是多少?
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 。接下来是每个测试用例的描述。
第一行包含两个整数 和 — 商品的数量和可用折扣券的数量。
第二行包含 个整数 — 商品的价格。
第三行包含 个整数 — 折扣券的面值。
保证所有测试用例的 之和不超过 ,且所有测试用例的 之和不超过 。
输出格式
输出 行。第 行应包含第 个测试用例的答案 — 在该测试用例中购买所有商品所需的最小总花费。
样例
输入
5
5 3
18 3 7 2 9
3 1 1
6 1
1 2 6 3 3 4
5
2 3
1 1
2 2 2
1 1
10
1
5 3
99 99 999 999 123
2 1 4
输出
10
17
1
0
1197
样例解释
第一个测试用例:你可以对商品 使用第一张折扣券。你将支付其中最贵的两个( 和 枚硬币),并获得最便宜的那个免费,花费为 枚硬币。然后,对商品 和 分别使用第二张和第三张折扣券,两个都免费获得。总花费为 枚硬币。
第二个测试用例:你可以对商品 使用唯一的一张折扣券。其中,最便宜的是商品 (价格为 枚硬币),你免费获得它。你支付其余商品: 枚硬币。
第三个测试用例:只有一张折扣券可用。你可以对两个商品使用它,获得较便宜的那个免费,并为另一个支付 枚硬币。