atcoder#ABC288B. [ABC288B] Qualification Contest

[ABC288B] Qualification Contest

配点 : 200200

問題文

NN 人の人があるコンテストに参加し、ii 位の人のハンドルネームは SiS_i でした。 上位 KK 人のハンドルネームを辞書順に出力してください。

辞書順とは?

辞書順とは簡単に説明すると「単語が辞書に載っている順番」を意味します。より厳密な説明として、相異なる文字列 SS と文字列 TT の大小を判定するアルゴリズムを以下に説明します。

以下では「 SSii 文字目の文字」を SiS_i のように表します。また、 SSTT より辞書順で小さい場合は S<TS \lt T 、大きい場合は S>TS \gt T と表します。

  1. SSTT のうち長さが短い方の文字列の長さを LL とします。i=1,2,,Li=1,2,\dots,L に対して SiS_iTiT_i が一致するか調べます。
  2. SiTiS_i \neq T_i である ii が存在する場合、そのような ii のうち最小のものを jj とします。そして、SjS_jTjT_j を比較して、 SjS_j がアルファベット順で TjT_j より小さい場合は S<TS \lt T 、大きい場合は S>TS \gt T と決定して、アルゴリズムを終了します。
  3. SiTiS_i \neq T_i である ii が存在しない場合、 SSTT の長さを比較して、SSTT より短い場合は S<TS \lt T 、長い場合は S>TS \gt T と決定して、アルゴリズムを終了します。

制約

  • 1KN1001 \leq K \leq N \leq 100
  • K,NK, N は整数
  • SiS_i は英小文字からなる長さ 1010 以下の文字列
  • iji \neq j ならば SiSjS_i \neq S_j

入力

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

NN KK

S1S_1

S2S_2

\vdots

SNS_N

出力

答えを改行区切りで出力せよ。

5 3
abc
aaaaa
xyz
a
def
aaaaa
abc
xyz

このコンテストには 55 人が参加し、11 位の人のハンドルネームは abc22 位の人のハンドルネームは aaaaa33 位の人のハンドルネームは xyz44 位の人のハンドルネームは a55 位の人のハンドルネームは def でした。

上位 33 人のハンドルネームは abcaaaaaxyz であるため、これを辞書順に並べ替えて aaaaaabcxyz の順に出力します。

4 4
z
zyx
zzz
rbg
rbg
z
zyx
zzz
3 1
abc
arc
agc
abc