AT_wupc2012_2 パスワード
Description
[problemUrl]: https://atcoder.jp/contests/wupc2012/tasks/wupc2012_2
メールにはプログラミングコンテストへの参加チケットと,圧縮ファイルが添付されていた.参加するには添付ファイルに含まれるパズルを解く必要があるようだ.しかし,圧縮ファイルにはパスワードが掛かっていた.しかも,正しいパスワードを入力しないと自動で消滅する仕組みだ!ファイルの消滅は,参加資格の剥奪を示す.招待しておきながら参加者を篩に掛ける気なのか.意外と厄介だぞ…
メール本文には招待状の後に,アルファベットからなる複数の文字列が羅列してあった.どうやら,2つ以上の文字列を任意の順番でつなげてできた文字列のうち,辞書順最小となるものが添付ファイルのパスワードのようだ. 文字列が $ N $ 個与えられる.$ N $ 個の文字列の中から $ 2 $ つ以上を選んで,任意の順番で繋げてできる文字列のうち,辞書順で最小なものを出力せよ.
ここで文字列 $ A $ が文字列 $ B $ より辞書順で小さいとは,$ A $ と $ B $ を最初の文字から比べていったとき,異なる最初の文字がアルファベット順で小さいか,または $ A $ が $ B $ の接頭辞である ($ B\ =\ A\ +\ ... $ という形になっている) ことを言う.例えば, $ abcd $ は $ abdc $ より辞書順で小さく,$ abcd $ は $ abcdef $ より辞書順で小さい. 入力は以下の形式で標準入力から与えられる.
> $ N $ $ S_{1} $ $ S_{2} $ $ ... $ $ S_{i} $ $ ... $ $ S_{N} $
- $ 1 $ 行目には文字列の数 $ N $($ 2\ ≦\ N\ ≦\ 50 $) が与えられる.
- $ 2 $ 行目~ $ N+1 $ 行目にはアルファベットの小文字のみを含む文字列が与えられる.
- 各文字列の長さは $ 50 $ を超えない.
与えられた文字列の中から $ 2 $ つ以上を選んで,任意の順番で繋げてできる文字列のうち,辞書順で最小なものを標準出力に $ 1 $ 行で出力せよ.
```
2 abcd efgh ``` ```abcdefgh ``` - この場合,$ abcdefgh $ と$ efghabcd $ の $ 2 $ 種類の文字列を作ることができる.$ abcdefgh $ の方が辞書順で前に来るため,ここは $ abcdefgh $ を出力する. ```3 caa abb ab ``` ```ababb ```
Input Format
N/A
Output Format
N/A