#ATagc028e. [AGC028E] High Elements

[AGC028E] High Elements

题目描述

给定一个 (1, 2, ... N)(1,\ 2,\ ...\ N) 的排列 PP

长度为 NN、仅由 01 组成的字符串 SS 是否为好字符串,按照如下方式判定:

  • 构造数列 XXYY,方法如下:
    • 首先,将 XXYY 设为空数列。
    • 对于每个 i=1, 2, ..., Ni=1,\ 2,\ ...,\ N,依次判断:若 Si=S_i= 0,则将 PiP_i 加入 XX 的末尾;若 Si=S_i= 1,则将 PiP_i 加入 YY 的末尾。
  • XX 中的高项个数与 YY 中的高项个数相等,则 SS 是好字符串。这里,某个数列的第 ii 项是高项,当且仅当该项是该数列第 11 项到第 ii 项中的最大值。

请判断是否存在好字符串,若存在请输出字典序最小的一个。

输入格式

输入从标准输入读入,格式如下:

NN P1P_1 P2P_2 ...... PNP_N

输出格式

若不存在好字符串,则输出 -1。若存在,则输出字典序最小的好字符串。

样例 1

输入

6
3 1 4 6 2 5

输出

001001

样例 2

输入

5
1 2 3 4 5

输出

-1

样例 3

输入

7
1 3 2 5 6 4 7

输出

0001101

样例 4

输入

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

说明/提示

限制

  • 1N2×1051\leq N\leq 2\times 10^5
  • 1PiN1\leq P_i\leq N
  • P1, P2, ..., PNP_1,\ P_2,\ ...,\ P_N 互不相同。
  • 输入均为整数。

样例解释 1

若取 S=S= 001001,则 X=(3, 1, 6, 2)X=(3,\ 1,\ 6,\ 2)Y=(4, 5)Y=(4,\ 5)XX 中的高项为第 11 项和第 33 项。YY 中的高项为第 11 项和第 22 项。高项个数相等,因此 001001 是好字符串。不存在字典序更小的好字符串,所以答案为 001001

由 ChatGPT 4.1 翻译