atcoder#APC001G. Colorful Doors
Colorful Doors
配点 : 点
問題文
左岸と右岸を繋ぐ橋があります。 橋の上の相異なる 箇所には、それぞれある色のドアが置かれています。 各ドアの色は から までの整数で表されます。 各 () について、色 のドアはちょうど 個存在します。
すぬけ君は、左岸から右岸へ橋を渡ることにしました。 すぬけ君は常に右へ向かって歩き続けますが、その間に次の現象が起こります。
- すぬけ君が色 () のドアに触れた瞬間、すぬけ君は色 の他方のドアのすぐ右へワープする。
すぬけ君はいずれ右岸に辿り着くことが示せます。
各 () について、左から 番目および 番目のドアに挟まれた区間を、区間 と呼ぶことにします。
橋を渡り終えたすぬけ君は、各 () について、区間 を歩いたか否かを記録しました。
この記録が、長さ の文字列 として与えられます。
各 () について、すぬけ君が区間 を歩いたならば、 の 文字目は 1
であり、そうでないならば、 の 文字目は 0
です。
図: 入力例 3 に対応するドアの配置の例
記録に矛盾しないようなドアの配置が存在するか判定し、存在するならばひとつ構成してください。
制約
- は
0
と1
のみからなる。
入力
入力は以下の形式で標準入力から与えられる。
出力
記録に矛盾しないようなドアの配置が存在しないならば、No
を出力せよ。
存在するならば、 行目に Yes
を出力し、 行目にドアの配置をひとつ次のフォーマットで出力せよ。
ただし、各 () について、 は左から 番目のドアの色である。
2
010
Yes
1 1 2 2
2
001
No
3
10110
Yes
1 3 2 1 2 3
以下の図は問題文中のものと同様です。
3
10101
No
6
00111011100
Yes
1 6 1 2 3 4 4 2 3 5 6 5