#P15786. 彩门桥的通行记录
彩门桥的通行记录
- 来源:Petrozavodsk Winter Training Camp 2018,Day 3: AtCoder Contest,Problem B
- 原题名:Colorful Doors
- 时间限制:2 秒
- 空间限制:256 MiB
题目描述
Snuke 要穿过一座连接河流左右两岸的桥。桥上从左到右放着 扇门,每扇门被涂成某种颜色。颜色用 到 的整数表示,并且每种颜色恰好出现两次。
Snuke 从左岸出发,始终朝右岸方向前进。不过,当他碰到某种颜色 的门时,会立刻传送到另一扇颜色同为 的门的右侧,然后继续向右走。
可以证明,无论门如何排列,Snuke 最终都会到达右岸。
对于 ,称从左数第 扇门和第 扇门之间的区域为第 段。
Snuke 过桥后记录了自己是否走过每一段。这个记录用一个长度为 的字符串 表示:
- 若 Snuke 走过第 段,则 ;
- 否则 。
现在给定记录 。请判断是否存在一种 扇门的颜色排列,使得 Snuke 的实际通行记录恰好为 。如果存在,请构造任意一种这样的排列。
输入格式
输入包含两行。
第一行包含一个整数 。
第二行包含一个长度为 的字符串 ,只由字符 0 和 1 组成。
输出格式
如果不存在合法排列,输出一行:
No
如果存在合法排列,第一行输出:
Yes
第二行输出 个整数
其中 表示从左往右第 扇门的颜色。
必须满足对于每个 ,颜色 恰好出现两次。
数据范围
- ;
- ;
- 只包含字符
0和1。
样例 1
输入
2
010
输出
Yes
1 1 2 2
样例 2
输入
2
001
输出
No
样例 3
输入
3
10110
输出
Yes
1 3 2 1 2 3
样例 4
输入
3
10101
输出
No
样例 5
输入
6
00111011100
输出
Yes
1 6 1 2 3 4 4 2 3 5 6 5