#CF1620F. Bipartite Array
Bipartite Array
Bipartite Array
- 时间限制:2 秒
- 内存限制:256 MiB
题目描述
给定一个由 个整数 组成的排列 (排列是一个数组,其中每个 到 的元素恰好出现一次)。
我们称一个数组 是二分的,如果如下无向图是二分图:
- 图包含 个顶点;
- 当 且 时,顶点 和 之间有一条边。
你的任务是找到一个大小为 的整数数组 ,使得 或 ,并且 是二分的,或者报告不存在这样的数组。如果有多个答案,输出任意一个即可。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含一个整数 (),表示排列的大小。
第二行包含 个整数 。
所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,按如下格式输出答案。如果不存在这样的数组 ,输出一行 "NO"。否则,第一行输出 "YES",第二行输出 个整数,表示数组 。
样例输入 1
4
3
1 2 3
6
1 3 2 6 5 4
4
4 1 3 2
8
3 2 1 6 7 8 5 4
样例输出 1
YES
1 2 3
NO
YES
-4 -1 -3 -2
YES
-3 -2 1 6 7 -8 -5 -4
数据范围
,,每个 均为 到 的排列,且所有测试用例的 之和不超过 。
| 子任务编号 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 20 | 每组 ,单文件 |
| 2 | 40 | 每组 ,单文件 |
| 3 | 无特殊限制 |