#abc425b. 寻找排列2
寻找排列2
题目描述
给定一个长度为 的整数序列 ,其中 的每个元素要么是 ,要么是 到 之间(包含端点)的整数。
请判断是否存在一个长度为 的整数序列 满足以下所有条件。若存在,输出其中一个合法序列;若不存在,输出 No
。
条件
-
是 的一个排列(即包含 1 到 N 的所有整数,且每个整数仅出现一次)。
-
对于 ,若 ,则必须满足 。
约束条件
-
-
每个 要么是 ,要么是 的整数
-
输入的所有值均为整数
输入格式
输入从标准输入按以下格式给出:
N
A_1 A_2 … A_N
输出格式
-
若不存在满足所有条件的 ,输出
No
。 -
若存在,按以下格式输出:
Yes
P_1 P_2 … P_N
- 若存在多个合法的 ,输出字典序最小的排列。
样例输入与输出
样例输入 1
4
-1 -1 2 -1
样例输出 1
Yes
1, 3, 2, 4
说明: 或者 或 等均为合法序列,其中字典序最小的是 。
样例输入 2
5
-1 -1 1 -1 1
样例输出 2
No
说明:不存在满足所有条件的 (因序列 中出现了两个 ,而 作为排列无法包含重复元素)。
样例输入 3
7
3 -1 4 -1 5 -1 2
样例输出 3
Yes
3 1 4 6 5 7 2