CFCF2176C.Odd Process

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你有 nn 枚硬币,面额分别为 a1,a2,,ana_1, a_2, \ldots, a_n,还有一个自然数 kk。你有一个最开始为空的包,你可以把硬币放进去。你需要恰好进行 kk 次操作,每次操作选一个剩下的硬币放进包里,该硬币之后不能再选。

同时,你有一只非常喜欢偶数的猫,每当你包内硬币的面额和变为偶数时,猫就会把包清空,也就是它把包里所有硬币都带走了,包会变为空。注意,只要放了一个硬币后包内的和变为偶数,无论在什么时候,猫都会立刻把包清空,不仅仅是在最后一步。

记你的得分为包中硬币面额的和。你的任务是,用 kk 次操作让最终分数最大。请你计算所有 1kn1 \leq k \leq n 时的最大可能最终分数,并输出。

输入格式

每个测试包含多组数据。第一行为测试组数 tt1t1041 \leq t \leq 10^4)。
每组数据的第一行包含一个正整数 nn1n2×1051 \leq n \leq 2 \times 10^5),表示硬币数量。
每组数据的第二行包含 nn 个自然数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \leq a_i \leq 10^9),表示硬币的面额。
保证所有测试数据中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每组数据,输出 nn 个数,第 kk 个数表示恰好进行 kk 次操作后的最大可能得分。每组输出占一行。

输入输出样例

  • 输入#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,11,1,1 的硬币。

  • k=1k=1:不论选哪枚硬币,包里和都是 11,最终得分也是 11
  • k=2k=2:无论选择哪两枚硬币,初始面额和为 11,第二次操作后和为 22,此时包被清空,最终得分为 00
  • k=3k=3:前两步包中和为 22,包被清空,包变空。第三步再选一枚硬币,和为 11

在第二组输入数据中,你有面额为 1,2,31,2,3 的硬币。

  • k=1k=1:选面额为 22 的硬币时,包被猫清空,最终得分为 00。选 1133,得分分别为 1133。最大分为 33
  • k=2k=2:选择 1133 时,和为 44,包被猫清空。若第一步选 33,得分为 33,第二步选 22,总分为 55
  • k=3k=3:所有硬币都选上,总和为 66,但每到偶数时包会被清空,最终分数为 00
首页