疯狂的删除
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
问题描述
如果以下属性成立,则将长度为 的数组 称为疯狂数组:
- 设 是一个长度为 的数组,且 覆盖所有 。
- 将 按非递减顺序排序。
- 如果 覆盖所有 ,那么 是一个疯狂数组。
例如
- 如果 ,那么排序后为 。因为 在所有位置,所以 是疯狂数组。
- 如果是 ,那么排序后是 。因为 ,所以 不是疯狂数组。
给你一个长度为 的数组 。在一次操作中,你可以从 中删除一个元素。每次删除后,其余元素的顺序都会保持不变。
输出是否有可能执行一些(可能没有)操作,从而使剩余元素形成一个疯狂数组。如果可能,则输出任何可能的剩余数组。剩余数组必须是非空的。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 ( )。测试用例说明如下。
每个测试用例的第一行都包含一个整数 ( ) - 数组 的长度。
每个测试用例的第二行包含 个整数 ( ) - 表示数组 。
输出格式
对于每个测试用例,在新的一行中,如果可以执行操作,使得剩余数组是疯狂的,则输出 "YES"。否则,输出 "NO"。
如果您的回答是肯定的,则按以下格式再输出两行:
- 第一行应包含一个整数 ( ),即数组中剩余元素的个数。
- 第二行应该包含 ,即数组中剩余的元素。在对数组 进行操作后,必须能够得到数组 。数组 必须为疯狂。
样例输入
3
3
2 2 3
5
4 5 5 2 4
1
1
样例输出
NO
YES
4
4 5 2 4
NO
说明
在第二个测试案例中,我们可以从数组中删除一个 ,使其变为 。可以证明这个数组是一个疯狂。这并不是唯一的解决方案--可以证明原来的数组 是另一个有效的解决方案。