atcoder#AGC028E. [AGC028E] High Elements
[AGC028E] High Elements
配点 : 点
問題文
の順列 が与えられます。
0
, 1
からなる長さ の文字列 がよい文字列であるかどうかは、以下の様に判定されます。
- 数列 , を次のように構築する。- まず、, を空の数列とする。
- 各 について、この順に、
0
なら の末尾に、1
なら の末尾に を追加する。
- 各 について、この順に、
- まず、, を空の数列とする。
- 各 について、この順に、
0
なら の末尾に、1
なら の末尾に を追加する。 - の中にある高い項の個数と の中にある高い項の個数が等しいならば、 はよい文字列である。 ここで、ある数列の 番目の項が高いとは、その項が数列の 番目から 番目の項の中で最大であることを意味する。
よい文字列が存在するか判定し、存在するならその中で辞書順最小のものを求めてください。
制約
- はすべて異なる。
- 入力はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
出力
よい文字列が存在しないならば -1
と出力せよ。
存在するならば、その中で辞書順最小のものを出力せよ。
6
3 1 4 6 2 5
001001
001001
とすると、, となります。
の中で高い項は、 項目と 項目です。
また、 の中で高い項は、 項目と 項目です。
高い項の数が等しいので、001001
はよい文字列です。
これより辞書順で小さいよい文字列は存在しないので、001001
が答えになります。
5
1 2 3 4 5
-1
7
1 3 2 5 6 4 7
0001101
30
1 2 6 3 5 7 9 8 11 12 10 13 16 23 15 18 14 24 22 26 19 21 28 17 4 27 29 25 20 30
000000000001100101010010011101