#CF2147D. 阵列游戏
阵列游戏
D. 阵列游戏
每次测试时间限制: 秒
每次测试内存限制: 兆字节
你会被赋予一个由 个正整数组成的数组 。爱丽丝和鲍勃将用这个数组玩游戏。他们轮流行动,爱丽丝先上场。
每回合,玩家必须选择一个值 ,且 在当前数组中至少出现一次。然后:
- 玩家获得 每个值为 的点数 分。
- 数组中的 每个值为 的元素会被减小 ,变为 。
注意:玩家只能选择当前存在于数组中的 ,因此每一步有效的走法都会获得正数分。
例如,如果数组是 ,爱丽丝选择 ,数组将变为 ,爱丽丝将获得 分。
游戏结束时没有 可以选择;即当数组中的所有元素均为 时。
给定双方都希望最大化自己的得分并以最佳方式进行游戏,计算他们各自最终获得的分数。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 ()。
接下来是每个测试用例的描述:
- 每个测试用例的第一行包含一个整数 ()——数组的大小。
- 第二行包含 个整数 ()——数组的元素。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出两个整数,即 爱丽丝 和 鲍勃 在两人都最优时获得的分数。
示例
输入:
3
3
2 1 1
5
3 3 3 5 5
4
9 9 9 9
输出:
3 1
10 9
20 16
注释
-
在第一个测试用例中,爱丽丝先选择 。数组变为 ,她获得 分。
之后鲍勃被迫选择 ,数组变为 ,鲍勃获得 分。
最后爱丽丝被迫选择 ,再得 分。最终数组为 ,游戏结束。
总计:爱丽丝 分,鲍勃 分。 -
在第三个测试用例中,每位玩家每一步都会减少所有元素并获得 分。
爱丽丝会获得 分,鲍勃获得 分。