AT_nupc2024_h LCS order
Description
長さ $ N $ の文字列 $ S $ と、長さ $ M $ の文字列 $ T $ が与えられます。
以下の $ Q $ 個のクエリに答えてください。
$ i \ (1\leq i\leq Q) $ 番目のクエリは以下の通りです。
- $ S, T $ の LCS のうち、辞書順で $ k_i $ 番目のものを出力する。
ただし、該当する LCS が存在しない場合や空文字列である場合は、`-1` を出力してください。
なお、LCS 同士が文字列として等しい場合、異なる位置から取り出したものであっても、それらは区別しないものとします。
LCS (最長共通部分列)とは 文字列 $ S, T $ の LCS とは、 $ S $ の部分列でも $ T $ の部分列でもあるような文字列のうち、長さが最大のもののことを指します。 ここで、ある文字列 $ U $ の部分列とは、 $ U $ から $ 0 $ 個以上の文字を取り出し、それらを順序を変えずに並べた文字列のことを指します。
Input Format
入力は以下の形式で標準入力から与えられます。
> $ N $ $ M $ $ S $ $ T $ $ Q $ $ k_1 $ $ k_2 $ $ \vdots $ $ k_Q $
Output Format
$ Q $ 行出力してください。
$ i \ (1\leq i\leq Q) $ 行目には、 $ i $ 番目のクエリの答えを出力してください。
Explanation/Hint
### Sample Explanation 1
LCS の長さは $ 3 $ であり、辞書順にすべて列挙すると、`abc`, `abd`, `abe`, `abf`となります。
したがって、 $ 3 $ 番目のクエリまでは $ 1, 2, 4 $ 番の LCS を出力します。
$ 4 $ 番目のクエリでは、LCS の数は全部で $ 4 $ 種類であるため `-1` を出力します。
### Sample Explanation 2
LCS の長さは $ 2 $ であり、辞書順にすべて列挙すると、`ab` のみとなります。(取る添え字が異なるものは区別しません。)
### Sample Explanation 3
二つの文字列で一致する箇所はなく、LCS は空文字列となるため `-1` を出力します。
### Constraints
- $ 1\leq N,M,Q\leq 1000 $
- $ 1\leq k_i\leq 10^9 $
- $ N,M,Q,k_i $ は整数
- $ S $ は長さ $ N $ の英小文字列
- $ T $ は長さ $ M $ の英小文字列