#P13810. [cf20117 final]Full Tournament
[cf20117 final]Full Tournament
题目描述
有 名选手进行了一场锦标赛。每位选手都有 到 的编号,当两名选手对战时,编号较小的选手一定获胜。
本次锦标赛有些不同,失败者之间也会进行比赛,从而确定所有选手的最终排名。
在这里,我们将这样的 人比赛称为“等级为 的全锦标赛”。等级为 的全锦标赛的排名按照如下规则决定:
- 等级为 的全锦标赛只有 名参与者,该选手获得第 名。
- 等级为 的全锦标赛,从 名选手按顺序排成一行开始,排名的决定方式如下:
- 首先,从一端开始,每两人分为一组,得到 组,每组 人。
- 每组进行对战,获胜者进入胜者组,失败者进入败者组。
- 将胜者组内的选手按原排列顺序重新排队,以此进行等级为 的全锦标赛,决定他们的排名。
- 败者组也同样排序,但在他们的每个排名基础上加上 。
例如,将 名选手按 的顺序进行等级为 的全锦标赛。比赛如图所示,最终按名次排列后的顺序为 。

高桥君手中有一张记录着选手编号按锦标赛最终名次排列的纸条,但有些地方被弄脏无法辨认。现在给定这张纸的信息为长度为 的数列 ,当 时,表示第 名选手的编号为 ,当 时,表示第 名选手的编号已不可辨认。
请判断是否存在一种初始选手排列顺序,通过这样的锦标赛最终结果能得到给定的名次序列 。如果存在,请给出一种可能的初始排列。
输入格式
输入以如下格式通过标准输入给出。
输出格式
如果存在一种初始的选手排列顺序能够得到给定的名次序列,则输出 YES,第二行输出一种符合要求的初始排列,选手编号按顺序以空格分隔。
如果不存在,则输出 NO。
输入输出样例 #1
输入 #1
3
0 3 0 6 0 0 0 8
输出 #1
YES
3 4 8 6 2 1 7 5
输入输出样例 #2
输入 #2
1
2 1
输出 #2
NO
说明/提示
限制
- 除 外, 中的整数不会重复出现。
样例解释 1
与题目描述中的例子排列顺序相同。
由 ChatGPT 5 翻译