#CF2004C. 拆分物品*
拆分物品*
C. 拆分物品
时间限制:每测试点 秒
内存限制: 兆字节
Alice 和 Bob 有 个物品,他们想把这些物品分给两人,于是决定玩一个游戏。所有物品都有一个价格,第 个物品的价格是 。玩家从 Alice 开始轮流行动。
在每个回合中,当前玩家选择一个剩下的物品并拿走它。游戏一直进行到所有物品都被拿完为止。
设 是 Alice 拿走的物品的总价格, 是 Bob 拿走的物品的总价格。那么游戏的得分就是 。
Alice 希望最大化这个得分,Bob 希望最小化它。两人都会以最优策略进行游戏。
然而,游戏将在明天进行,所以今天 Bob 可以对价格做一些修改。他可以选择若干(可以是零个或全部)物品,并将它们的价格增加一个整数值(每个物品可以增加不同的值,也可以增加相同的值)。但是,所有物品增加的总和必须小于或等于 。否则,Alice 可能会起疑心。注意:Bob 只能增加价格,不能减少。
Bob 能实现的最小可能得分是多少?
输入格式
第一行包含一个整数 ()——测试用例的数量。接下来是 个测试用例。
每个测试用例的第一行包含两个整数 和 (,)——物品的数量以及 Bob 可以增加的总和的最大值。
每个测试用例的第二行包含 个整数 ()——物品的初始价格。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数——Bob 在增加若干(可能全部)物品的价格后,能实现的最小可能得分 。
样例输入
4
2 5
1 10
3 0
10 15 12
4 6
3 1 2 4
2 4
6 9
样例输出
4
13
0
0
样例解释
-
第一个测试用例:Bob 可以将 增加 ,使得价格变为 。明天,Alice 会拿走 ,Bob 拿走 。得分为 ,这是可能的最小值。
-
第二个测试用例:Bob 无法修改价格,因此得分是 ,因为 Alice 会先拿 ,Bob 拿 ,然后 Alice 拿 。
-
第三个测试用例:Bob 可以将 增加 , 增加 , 增加 ,总增加 ,价格变为 。显然得分为 。
-
第四个测试用例:Bob 可以将 增加 ,价格变为 ,得分为 。