atcoder#AGC024F. [AGC024F] Simple Subsequence Problem

[AGC024F] Simple Subsequence Problem

配点 : 23002300

問題文

0,1 からなる文字列からなる集合 SS と整数 KK が与えられます。 SS に属する異なる KK 個以上の文字列の部分列であるような最長の文字列を求めてください。 条件を満たすものが複数ある場合、辞書順で最小になるものを求めてください。

ただし、SS は以下の形式で与えられます。

  • 整数 NN と、N+1N+1 個の文字列が与えられる。N+1N+1 個の文字列は順に X0,X1,...,XNX_0,X_1,...,X_N であり、全ての i(0iN)i(0\leq i\leq N) に対し、XiX_i の長さは 2i2^i である。
  • どの整数の組 (i,j)(0iN,0j2i1)(i,j)(0\leq i\leq N,0\leq j\leq 2^i-1) に対しても、XiX_ijj 文字目(ただし、最初の文字を 00 文字目、最後の文字を 2i12^i-1 文字目とする)が 1 であることと、jj を(必要なら最初に 00 を補って) ii 桁からなる二進表記で表してできる文字列が SS に属することが同値である。
  • 長さ N+1N+1 以上の文字列は、SS には含まれない。

また、文字列 AA が 文字列 BB の部分列であるとは、ある整数列 t1<...<tAt_1 < ... < t_{|A|} が存在して、全ての i(1iA)i(1\leq i\leq |A|) に対し AAii 文字目と BBtit_i 文字目が等しいことを指します。

制約

  • 0N200 \leq N \leq 20
  • Xi(0iN)X_i(0\leq i\leq N) の長さは 2i2^i であり、01 のみからなる
  • 1KS1 \leq K \leq |S|
  • KK は整数である

入力

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

NN KK

X0X_0

::

XNX_N

出力

SS に属する異なる KK 個以上の文字列の部分列であるような最長の文字列のうち、辞書順最小のものを出力せよ。

3 4
1
01
1011
01001110
10

SS に属する文字列は、(空文字列),1,00,10,11,001,100,101,110 です。 これらのうち 44 つ以上の部分列となる最長の文字列のうち辞書順最小のものは、10 です。

4 6
1
01
1011
10111010
1101110011111101
100
2 5
0
11
1111

空文字列が答えになります。