#apc001g. [apc001_g]Colorful Doors
[apc001_g]Colorful Doors
题目描述
有一座连接河流左岸和右岸的桥。这座桥上放置了 扇不同位置的门,每扇门都染有特定的颜色。门的颜色用从 到 的整数表示。对于每个 (),恰好有两扇染有颜色 的门。
Snuke 决定从左岸过桥到右岸。他将一直向右走,但在此过程中会发生以下事件:
- 当 Snuke 触摸到染有颜色 的门()时,他会瞬间传送到染有颜色 的另一扇门的右侧。
可以证明他最终会到达右岸。
对于每个 (),从左边数第 扇门到第 扇门之间的区域称为第 段。Snuke 过桥后,他记录了自己是否通过了第 段的信息,其中 的取值范围为 。这个记录以一个长度为 的字符串 的形式给出。对于每个 (),如果 Snuke 通过了第 段,则 的第 个字符为 1
;否则,第 个字符为 0
。
图示:样例输入 3 对应的一种门的布置
确定是否存在与记录一致的门的布置方式。如果存在,则构造一种这样的布置方式。
约束条件
- 由
0
和1
组成。
输入
从标准输入读入数据,数据格式如下:
输出
如果不存在与记录一致的门的布置方式,则输出 No
。如果存在这样的布置方式,则在第一行打印 Yes
,然后在第二行以以下格式打印一种布置方式:
其中,对于每个 (), 是从左边数第 扇门的颜色。
示例输入 1
2
010
示例输出 1
Yes
1 1 2 2
示例输入 2
2
001
示例输出 2
No
示例输入 3
3
10110
示例输出 3
Yes
1 3 2 1 2 3
下图与题目描述中的图相同。
示例输入 4
3
10101
示例输出 4
No
示例输入 5
6
00111011100
示例输出 5
Yes
1 6 1 2 3 4 4 2 3 5 6 5