atcoder#APC001G. Colorful Doors

Colorful Doors

题目描述

左岸と右岸を繋ぐ橋があります。 橋の上の相異なる 2 N 2\ N 箇所には、それぞれある色のドアが置かれています。 各ドアの色は 1 1 から N N までの整数で表されます。 各 k k (1  k  N 1\ \leq\ k\ \leq\ N ) について、色 k k のドアはちょうど 2 2 個存在します。

すぬけ君は、左岸から右岸へ橋を渡ることにしました。 すぬけ君は常に右へ向かって歩き続けますが、その間に次の現象が起こります。

  • すぬけ君が色 k k (1  k  N 1\ \leq\ k\ \leq\ N ) のドアに触れた瞬間、すぬけ君は色 k k の他方のドアのすぐ右へワープする。

すぬけ君はいずれ右岸に辿り着くことが示せます。

i i (1  i  2 N  1 1\ \leq\ i\ \leq\ 2\ N\ -\ 1 ) について、左から i i 番目および i + 1 i\ +\ 1 番目のドアに挟まれた区間を、区間 i i と呼ぶことにします。 橋を渡り終えたすぬけ君は、各 i i (1  i  2 N  1 1\ \leq\ i\ \leq\ 2\ N\ -\ 1 ) について、区間 i i を歩いたか否かを記録しました。 この記録が、長さ 2 N  1 2\ N\ -\ 1 の文字列 s s として与えられます。 各 i i (1  i  2 N  1 1\ \leq\ i\ \leq\ 2\ N\ -\ 1 ) について、すぬけ君が区間 i i を歩いたならば、s s i i 文字目は 1 であり、そうでないならば、s s i i 文字目は 0 です。

図: 入力例 3 に対応するドアの配置の例

記録に矛盾しないようなドアの配置が存在するか判定し、存在するならばひとつ構成してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N s s

输出格式

記録に矛盾しないようなドアの配置が存在しないならば、No を出力せよ。 存在するならば、1 1 行目に Yes を出力し、2 2 行目にドアの配置をひとつ次のフォーマットで出力せよ。 ただし、各 i i (1  i  2 N 1\ \leq\ i\ \leq\ 2\ N ) について、ci c_i は左から i i 番目のドアの色である。

c1 c_1 c2 c_2 ... ... c2 N c_{2\ N}

题目大意

NN 对传送门将一条路径划分为 2N+12N+1 段。

你从路径最左端开始一直向右走。当你从左侧到达一个传送门时,你会被立刻传送到和此传送门配对的传送门右侧。可以证明,不管传送门如何配对,你总是能到达路径尽头。

现在给定一个 0101 串表示每一段路是否被你经过过,请你构造出一种合法的配对方案或是指出这个 0101 串是错误的。

显然你一定会经过第一段和最后一段,所以输入的 0101 串只有 2N12N-1 位。

N105N \le 10^5

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

提示

制約

  • 1  N  105 1\ \leq\ N\ \leq\ 10^5
  • s = 2 N  1 |s|\ =\ 2\ N\ -\ 1
  • s s 01 のみからなる。

Sample Explanation 3

以下の図は問題文中のものと同様です。 ![](https://img.atcoder.jp/cookie/970b981380ffad7745008433034c0885.png)