最長共通接尾辞 (Longest Common Suffix) クエリ

(ラップバトル)
n 個の異なる単語リスト と、q 個のクエリ単語 が与えられています。ここでの課題は、各クエリ単語 w に対して、リスト a の中から「w と異なる単語のうち、w との共通する末尾部分が最も長く、かつ辞書順で最小の単語」を見つけることです。

入力

入力の最初の行には、文字列の数を表す整数 n (2 ≤ n ≤ 25 000) が与えられます。
続く n 行には、単語が与えられます。各単語は小文字の英字からなり、その長さは最大 30 文字です。
次の行には、クエリ単語の数を表す整数 q (1 ≤ q ≤ 25000) が与えられます。
続く q 行には、クエリ単語が与えられます。
クエリ単語も小文字の英字からなり、その長さは最大 30 文字です。

出力

各クエリについて、クエリ単語と異なり、共通接尾辞が最も長く、かつ辞書順で最小となるリスト内の単語を 1 行に 1 つ出力してください。

Input
Output
4 perfect rhyme crime time 2 crime rhyme
time crime
 
 

Constraints

Time limit: 5 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue