AT_arc227_b [ARC227B] Know Your Place

题目描述

给定一个长度为 $N$ 的非负整数序列 $A=(A_1, A_2, \ldots, A_N)$。 请判断是否存在一个序列 $B=(B_1, B_2, \ldots, B_N)$,使得 $B$ 是 $A$ 的一个排列,并且对于每一个 $i=1,2,\ldots,N$,都满足以下条件: - $B_i$ 等于满足 $1 \le j < i$ 且 $B_j < B_i$ 的整数 $j$ 的个数。 如果存在满足条件的 $B$,请构造出这样一个序列。

输入格式

输入从标准输入获得,格式如下: > $N$ $A_1$ $A_2$ $\ldots$ $A_N$

输出格式

如果不存在满足条件的序列 $B$,输出 `No`。 如果存在,输出 `Yes`,并在同一行输出一个满足条件的序列 $B$: > Yes $B_1$ $B_2$ $\ldots$ $B_N$ 如果存在多个满足条件的序列,只需输出其中一个。

说明/提示

### 样例解释 1 输出的序列是 $A$ 的一个排列。对于 $i=1,2,3,4$,$B_i$ 左侧比 $B_i$ 小的元素个数分别为 $0, 1, 0, 3$,分别等于 $B_i$。 ### 样例解释 2 因为只有一个元素小于值 $2$,所以不存在任何满足条件的排列。 ### 样例解释 3 输出的序列是 $A$ 的一个排列。对于 $i=1,2,\ldots,7$,$B_i$ 左侧比 $B_i$ 小的元素个数分别为 $0, 1, 1, 3, 4, 4, 6$,分别等于 $B_i$。 ### 数据范围 - $1 \le N \le 5 \times 10^5$ - $0 \le A_i < N$ - 所有输入均为整数。 由 ChatGPT 5 翻译