#AGC028E. [AGC028E] High Elements

[AGC028E] High Elements

题目描述

(1, 2, ... N) (1,\ 2,\ ...\ N) の順列 P P が与えられます。

0, 1 からなる長さ N N の文字列 S S よい文字列であるかどうかは、以下の様に判定されます。

  • 数列 X X , Y Y を次のように構築する。
    • まず、X X , Y Y を空の数列とする。
    • i=1, 2, ... N i=1,\ 2,\ ...\ N について、この順に、Si= S_i= 0 なら X X の末尾に、Si= S_i= 1 なら Y Y の末尾に Pi P_i を追加する。
  • X X の中にある高い項の個数と Y Y の中にある高い項の個数が等しいならば、S S はよい文字列である。 ここで、ある数列の i i 番目の項が高いとは、その項が数列の 1 1 番目から i i 番目の項の中で最大であることを意味する。

よい文字列が存在するか判定し、存在するならその中で辞書順最小のものを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N P1 P_1 P2 P_2 ... ... PN P_N

输出格式

よい文字列が存在しないならば -1 と出力せよ。 存在するならば、その中で辞書順最小のものを出力せよ。

题目大意

题目描述:你有一个1,2,,n1,2,\dots,n 的排列 PP。设一个长度为 nn0101 字符串 SS 合法,当且仅当,先设两个空序列 A,BA,B,我们按照 11nn 的顺序,若 SS 当前位为 11 则把当前位的 PP 添加到序列 AA 的末尾,否则添加到序列 BB 的末尾,使得 A,BA,B 的前缀最大值个数相等。求字典序最小的合法字符串 SS

数据范围:n2×105,Pn\le 2\times 10^5,P1,2,,n1,2,\dots,n 的排列。

6
3 1 4 6 2 5
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

提示

制約

  • 1  N  2 × 105 1\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • 1  Pi  N 1\ \leq\ P_i\ \leq\ N
  • P1, P2, ... PN P_1,\ P_2,\ ...\ P_N はすべて異なる。
  • 入力はすべて整数である。

Sample Explanation 1

S= S= 001001 とすると、X=(3, 1, 6, 2) X=(3,\ 1,\ 6,\ 2) , Y=(4, 5) Y=(4,\ 5) となります。 X X の中で高い項は、1 1 項目と 3 3 項目です。 また、Y Y の中で高い項は、1 1 項目と 2 2 項目です。 高い項の数が等しいので、001001 はよい文字列です。 これより辞書順で小さいよい文字列は存在しないので、001001 が答えになります。