#apc001g. [apc001_g]Colorful Doors
[apc001_g]Colorful Doors
問題文
左岸と右岸を繋ぐ橋があります。 橋の上の相異なる 箇所には、それぞれある色のドアが置かれています。 各ドアの色は から までの整数で表されます。 各 () について、色 のドアはちょうど 個存在します。
すぬけ君は、左岸から右岸へ橋を渡ることにしました。 すぬけ君は常に右へ向かって歩き続けますが、その間に次の現象が起こります。
- すぬけ君が色 () のドアに触れた瞬間、すぬけ君は色 の他方のドアのすぐ右へワープする。
すぬけ君はいずれ右岸に辿り着くことが示せます。
各 () について、左から 番目および 番目のドアに挟まれた区間を、区間 と呼ぶことにします。 橋を渡り終えたすぬけ君は、各 () について、区間 を歩いたか否かを記録しました。 この記録が、長さ の文字列 として与えられます。 各 () について、すぬけ君が区間 を歩いたならば、 の 文字目は 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