atcoder#ABC146F. [ABC146F] Sugoroku

[ABC146F] Sugoroku

配点 : 600600

問題文

高橋君は双六で遊んでいます。

この双六には 00 から NN までの番号がついた N+1N + 1 個のマスがあります。高橋君はマス 00 からスタートし、ゴールするにはマス NN にちょうど止まらなければなりません。

この双六では、11 から MM までの MM 種類の目が出るルーレットを使います。各手番で、高橋君はルーレットを回して出た目の数だけ進みます。この結果マス NN を越えて進むことになる場合、ゲームオーバーとなります。

また、いくつかのマスは「ゲームオーバーマス」であり、それらのマスに止まってもゲームオーバーとなります。マスの情報は長さ N+1N + 1 の文字列 SS で与えられます。各 ii (0iN)(0 \leq i \leq N) について、S[i]=1S[i] = 1 のときマス ii はゲームオーバーマスであり、S[i]=0S[i] = 0 のときマス ii はゲームオーバーマスではありません。

高橋君がゲームオーバーとならずに最短手数でゴールするときの出目を順に答えてください。そのような目の出方が複数存在するときは、そのうち出目の列が辞書順で最小であるものを出力してください。ゲームオーバーとならずにゴールすることが不可能である場合は、 1-1 を出力してください。

制約

  • 1N1051 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • S=N+1|S| = N + 1
  • SS01から成る
  • S[0]=S[0] = 0
  • S[N]=S[N] = 0

入力

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

NN MM

SS

出力

ゴールすることが可能である場合、そのような最短の出目の列のうち辞書順で最小のものを出力せよ。ゴールすることが不可能である場合、1-1 を出力せよ。

9 3
0001000100
1 3 2 3

11 , 33 , 22 , 33 の順に目を出すと、高橋君はマス 11 , 44 , 66 を経由してマス 99 に到達することが出来ます。高橋君が 33 手以内にマス 99 に到達することは不可能であり、また 44 手でマス 99 に到達するような出目の列の中ではこれが辞書順で最小です。

5 4
011110
-1

高橋君はマス 55 に到達することが出来ません。

6 6
0101010
6