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 翻译