B - 積み鉛筆
Editorial
Time Limit: 2.525 sec / Memory Limit: 246 MB
問題文
ニワンゴくんは鉛筆を積むのが好きです。今日は以下の方法で鉛筆を積むことにしました。 まず、本の鉛筆を左右に列に床に並べます。左から番目の鉛筆の長さはです。
次に、本の鉛筆を、床に並べた隣り合うつの鉛筆の間の上に積みます。ただし、上に積む鉛筆の長さは、その下にあるつの鉛筆の長さのうち長い方と等しいです。すなわち、上に積む鉛筆のうち、左から番目のものの長さをと表すと、 が成り立ちます。
例えば、上図のような鉛筆の積み方があります。ここで、円の中に書かれている数は鉛筆の長さを表します。
積んだ鉛筆を上から見たとき、上に積まれた本の鉛筆の長さのみ見え、本の土台にある鉛筆の長さは分かりません。この状態で、土台となる本の鉛筆の長さとしてありうるものを考えるゲームをニワンゴくんは思いつきました。 あなたの仕事はこのゲームに正解するプログラムを書くことです。ただし、土台となる鉛筆の長さの組み合わせは存在することが保証されています。
すなわち、個の数からなる数列が与えられたとき、 がすべてのについて成り立つような数列を求めてください。
入出力
入力は以下の形式で標準入力から与えられる。
…
- 行目には、土台となる鉛筆の本数 が与えられる。
- 行目には、上に積まれている鉛筆の長さを表す個の整数が空白区切りで与えられる。
- が成り立つ。
出力
土台となる鉛筆の長さを空白区切りで1行に出力せよ。出力の末尾には改行をいれること。
入力例1Copy
Copy
4 3 5 5
出力例1Copy
Copy
1 3 5 4
の長さの鉛筆を土台として本の鉛筆を上に積むと、積まれた鉛筆の長さはそれぞれとなることが分かります。よって、は答えの条件を満たします。
入力例2Copy
Copy
6 4 8 8 2 5
出力例2Copy
Copy
4 4 8 2 2 5
入力例3Copy
Copy
5 1 2 3 4
出力例3Copy
Copy
1 1 2 3 4