#arc134d. [arc134_d]Concatenate Subsequences
[arc134_d]Concatenate Subsequences
問題文
長さ の数列 が与えられます。
すぬけ君が の空でない(連続するとは限らない)部分列 を用いて、数列を作ろうとしています。 作られる数列は、 の 番目、 番目、、 番目、 番目、、 番目の要素を抜き出してこの順で連結した数列です。
すぬけ君が作ることができる数列のうち、辞書順最小のものを求めてください。
数列の辞書順とは?
相異なる数列 と数列 の大小を判定するアルゴリズムを以下に説明します。
以下では の 番目の要素を のように表します。また、 が より辞書順で小さい場合は 、大きい場合は と表します。
- と のうち長さが短い方の数列の長さを とします。 に対して と が一致するか調べます。
- である が存在する場合、そのような のうち最小のものを とします。そして、 と を比較して、 が より(数として)小さい場合は 、大きい場合は と決定して、アルゴリズムを終了します。
- である が存在しない場合、 と の長さを比較して、 が より短い場合は 、長い場合は と決定して、アルゴリズムを終了します。
制約
- 与えられる入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
出力
すぬけ君が作ることができる数列のうち、辞書順最小のものを出力せよ。
入力例 1
3
2 1 3 1 2 2
出力例 1
1 2
- とします。
- このとき、作られる数列は となり辞書順最小です。
入力例 2
10
38 38 80 62 62 67 38 78 74 52 53 77 59 83 74 63 80 61 68 55
出力例 2
38 38 38 52 53 77 80 55
入力例 3
12
52 73 49 63 55 74 35 68 22 22 74 50 71 60 52 62 65 54 70 59 65 54 60 52
出力例 3
22 22 50 65 54 52