問題一覧 > 通常問題

No.205 マージして辞書順最小

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 176
作問者 : EmKjp
6 ProblemId : 412 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2015-11-14 17:48:25

問題文

N 個の文字列 S1,...,SN が与えられる。 これらの文字列を以下のような手順でマージして、1つの文字列にする。

  1. 文字列 T を空文字列に初期化する。
  2. S1,...,SN から空文字列ではない文字列 Skをどれかひとつ選ぶ、そのような文字列がない場合は 文字列 T を結果として返して終了する。
  3. Sk の最初の一文字を文字列 Tの一番最後に追加する。
  4. Sk から最初の一文字を削除する。
  5. 2. に戻る。
上記のマージで生成されうる文字列の中で、辞書順最小のものを答えよ。

入力

N
S1
S2
...
SN

1N50
1|Si|50 (1iN)
文字列 Si は、アルファベット小文字('a'~'z')で構成される。

出力

マージで生成されうる文字列のうち辞書順最小のものを出力してください。最後に改行してください。

サンプル

サンプル1
入力
1
abc
出力
abc

1つしか文字列がないので、マージして得られるのは "abc" の1通りのみです。

サンプル2
入力
2
ac
bd
出力
abcd

生成されうる文字列は、"abcd", "abdc", "acbd", "bacd", "badc", "bdac" の6つで、その中で辞書順最小になるのは "abcd" になります。

サンプル3
入力
5
one
two
three
four
five
出力
ffioneothreeturvewo

サンプル4
入力
2
az
za
出力
azaz

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。