F - Preimage Resistance

2 secs 1024 MB
uni_kakurenbo's icon uni_kakurenbo

問題文

11 から NN までの番号がついた,NN 個の文字列 S(1),S(2),,S(N)S^{(1)}, S^{(2)}, \ldots, S^{(N)} があります.

MojaMoja君は,これら NN 個の文字列から MM 個を選び,それらの頭文字を順に繋ぎ合わせて,長さ MM の文字列 HH を作りました.
文字列を選ぶ際には同じものを何度でも選んでよかったものとします.

この HH を作ることのできる,MM 個の文字列 T(1),T(2),,T(M)T^{(1)}, T^{(2)}, \ldots, T^{(M)} の選び方としてあり得るもののうちで,辞書順で KK 番目に小さいものは何でしょうか?

すなわち,NN 個の文字列 S(1),S(2),,S(N)S^{(1)}, S^{(2)}, \ldots, S^{(N)} から重複を許して MM 個を選び,それらを選んだ順に T(1),T(2),,T(M)T^{(1)}, T^{(2)}, \ldots, T^{(M)} とするとき,文字列の列 T=(T(1),T(2),,T(M))T = (T^{(1)}, T^{(2)}, \ldots, T^{(M)}) であって,次に示す条件を満たすようなもののうちで,辞書順で KK 番目に小さいものを求めてください.

条件

  • 先頭から順に,各文字列の先頭の文字を連結して得られる,長さ MM の文字列 T1(1)T1(2)T1(M)T^{(1)}_1T^{(2)}_1\ldots T^{(M)}_1HH と等しい

T1(i)(1iM)T^{(i)}_1 \hspace{0.3em} \scriptsize (1 \leq i \leq M) は,文字列 T(i)T^{(i)} の先頭の文字を表します.

ここで,条件を満たすような TT としてあり得る文字列の列が,必ず KK 個以上存在することが保証されます。

なお,ある長さ ll の文字列の列 X1,X2,,XlX_1, X_2, \ldots, X_l が,ある長さ ll の文字列の列 Y1,Y2,,YlY_1, Y_2, \ldots, Y_l より辞書順で小さいとは,ある整数 i(1il)i \hspace{0.3em} \scriptsize(1 \leq i \leq l) が存在して,列 XX と列 YY とは先頭の i1i - 1 項が一致しており,かつ, 文字列 XiX_i が文字列 YiY_i よりも辞書順で真に小さいことを指します.

制約

  • 1N,M2×1051 \leq N, M \leq 2\times 10^5
  • 1K10181 \leq K \leq 10^{18}
  • H=M|H| = M
  • 1S(i)100(1iN)1 \leq |S^{(i)}| \leq 100 \hspace{0.3em} \scriptsize(1 \leq i \leq N)
  • iji \not= j ならば S(i)S(j)(1i,jN)S^{(i)} \not= S^{(j)} \scriptsize(1 \leq i,j \leq N)
  • N,M,KN, M, K は整数である
  • H,S(i)(1iN)H, S^{(i)} \hspace{0.3em} \scriptsize(1 \leq i \leq N) は半角英小文字のみからなる
  • 本文中の条件を満たす TT としてあり得る列は KK 個以上存在する
  • 答えとなる文字列の列を (V(1),V(2),,V(M))(V^{(1)}, V^{(2)}, \ldots, V^{(M)}) として 1iMV(i)106\displaystyle \sum_{1 \leq i \leq M} |V^{(i)}| \leq 10^6

入力

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

N  M  KN\; M\; K
HH
S(1)S^{(1)}
S(2)S^{(2)}
\vdots
S(N)S^{(N)}

出力

答えとなる列を,空白もしくは改行区切りで出力せよ.

サンプル

入力例1
6 3 6
tgc
competition
the
grand
contest
gray
topcoder
出力例1
topcoder grand contest

% T としてあり得る列は,辞書順で昇順に (**`t`**`he`, **`g`**`rand`, **`c`**`ompetition`), (**`t`**`he`, **`g`**`rand`, **`c`**`ontest`), (**`t`**`he`, **`g`**`ray`, **`c`**`ompetition`), (**`t`**`he`, **`g`**`ray`, **`c`**`ontest`), (**`t`**`opcoder`, **`g`**`rand`, **`c`**`ompetition`), (**`t`**`opcoder`, **`g`**`rand`, **`c`**`ontest`), (**`t`**`opcoder`, **`g`**`ray`, **`c`**`ompetition`), (**`t`**`opcoder`, **`g`**`ray`, **`c`**`ontest`) の8つです.

問題文中の条件を満たすような列 TT は,辞書順で昇順に
(the”,grand”,competition”),(the”,grand”,contest”),(the”,gray”,competition”),(the”,gray”,contest”),(topcoder”,grand”,competition”),(topcoder”,grand”,contest”),(topcoder”,gray”,competition”),(topcoder”,gray”,contest”)(\text{\textquotedblleft}\bold{t}\text{he\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{rand\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ompetition\textquotedblright}), (\text{\textquotedblleft}\bold{t}\text{he\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{rand\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ontest\textquotedblright}), \\ (\text{\textquotedblleft}\bold{t}\text{he\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{ray\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ompetition\textquotedblright}), (\text{\textquotedblleft}\bold{t}\text{he\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{ray\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ontest\textquotedblright}), \\ (\text{\textquotedblleft}\bold{t}\text{opcoder\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{rand\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ompetition\textquotedblright}), (\underline{\text{\textquotedblleft}\bold{t}\text{opcoder\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{rand\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ontest\textquotedblright}}), \\ (\text{\textquotedblleft}\bold{t}\text{opcoder\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{ray\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ompetition\textquotedblright}), (\text{\textquotedblleft}\bold{t}\text{opcoder\textquotedblright}, \text{\textquotedblleft}\bold{g}\text{ray\textquotedblright}, \text{\textquotedblleft}\bold{c}\text{ontest\textquotedblright})
88 つです.

Submit


Go (1.21)