平衡序列极限消除
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
小 A 正在玩一个“平衡消除”游戏。给定一个正整数序列 ,如果存在一个位置 (),使得前 个数的和等于后面所有数的和,那么称这个位置是一个“平衡点”。
现在你要不断对序列执行下面的操作:
- 如果当前序列存在平衡点,就选择最靠左的那个平衡点;
- 删除这个平衡点右侧的所有元素,只保留左侧这一段;
- 然后继续在新序列上重复这一过程。
当序列已经不存在平衡点时,操作结束。
请你输出最终保留下来的序列长度,以及最终序列的内容。
输入格式
第一行一个整数 ,表示测试数据组数。
对于每组数据:
- 第一行一个整数 ;
- 第二行 个正整数,表示序列内容。
输出格式
对于每组数据输出两行:
- 第一行输出最终长度;
- 第二行输出最终保留的序列。
2
6
1 2 3 6 12 24
4
2 3 1 4
2
1 2
2
2 3
1
5
1 1 2 1 1
5
1 1 2 1 1
说明/提示
样例 1 解释:
第一组数据中,初始序列为 1 2 3 6 12 24。第一次能找到的最靠左平衡点在 1 2 3 | 6 之后,保留前缀后得到 1 2 3 6;接着在新序列中,最靠左平衡点在 1 2 | 3 之后,再次保留前缀后得到 1 2。此时已经无法继续分割,因此最终答案为长度 、序列 1 2。
第二组数据中,2 3 1 4 的最靠左平衡点在 2 3 | 1 4 之间,因为左右两部分的和都为 。保留后得到 2 3,总和为 ,已经无法继续平分,所以最终序列为 2 3。
样例 2 解释:
序列 1 1 2 1 1 的总和为 ,但不存在一个位置能把它分成左右和相等的两部分,因此它从一开始就不能进行消除,最终保持原样。
对于所有测试点,保证 ,,。