CFCF2176C.Odd Process
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有 n 枚硬币,面额分别为 a1,a2,…,an,还有一个自然数 k。你有一个最开始为空的包,你可以把硬币放进去。你需要恰好进行 k 次操作,每次操作选一个剩下的硬币放进包里,该硬币之后不能再选。
同时,你有一只非常喜欢偶数的猫,每当你包内硬币的面额和变为偶数时,猫就会把包清空,也就是它把包里所有硬币都带走了,包会变为空。注意,只要放了一个硬币后包内的和变为偶数,无论在什么时候,猫都会立刻把包清空,不仅仅是在最后一步。
记你的得分为包中硬币面额的和。你的任务是,用 k 次操作让最终分数最大。请你计算所有 1≤k≤n 时的最大可能最终分数,并输出。
输入格式
每个测试包含多组数据。第一行为测试组数 t(1≤t≤104)。
每组数据的第一行包含一个正整数 n(1≤n≤2×105),表示硬币数量。
每组数据的第二行包含 n 个自然数 a1,a2,…,an(1≤ai≤109),表示硬币的面额。
保证所有测试数据中 n 的总和不超过 2×105。
输出格式
对于每组数据,输出 n 个数,第 k 个数表示恰好进行 k 次操作后的最大可能得分。每组输出占一行。
输入输出样例
输入#1
6 3 1 1 1 3 1 2 3 5 4 1 3 1 2 5 4 2 3 1 3 3 4 1 2 3 4 2 2
输出#1
1 0 1 3 5 0 3 7 9 7 9 3 7 9 7 9 1 5 7 0 0 0
说明/提示
在第一组输入数据中,你有面额为 1,1,1 的硬币。
- k=1:不论选哪枚硬币,包里和都是 1,最终得分也是 1。
- k=2:无论选择哪两枚硬币,初始面额和为 1,第二次操作后和为 2,此时包被清空,最终得分为 0。
- k=3:前两步包中和为 2,包被清空,包变空。第三步再选一枚硬币,和为 1。
在第二组输入数据中,你有面额为 1,2,3 的硬币。
- k=1:选面额为 2 的硬币时,包被猫清空,最终得分为 0。选 1 或 3,得分分别为 1 和 3。最大分为 3。
- k=2:选择 1 和 3 时,和为 4,包被猫清空。若第一步选 3,得分为 3,第二步选 2,总分为 5。
- k=3:所有硬币都选上,总和为 6,但每到偶数时包会被清空,最终分数为 0。