AT_agc028_e [AGC028E] High Elements

题目描述

给定一个 $ (1,\ 2,\ ...\ N) $ 的排列 $ P $。 长度为 $ N $、仅由 `0` 和 `1` 组成的字符串 $ S $ 是否为**好字符串**,按照如下方式判定: - 构造数列 $ X $ 和 $ Y $,方法如下: - 首先,将 $ X $ 和 $ Y $ 设为空数列。 - 对于每个 $ i=1,\ 2,\ ...,\ N $,依次判断:若 $ S_i= $ `0`,则将 $ P_i $ 加入 $ X $ 的末尾;若 $ S_i= $ `1`,则将 $ P_i $ 加入 $ Y $ 的末尾。 - 若 $ X $ 中的**高项**个数与 $ Y $ 中的**高项**个数相等,则 $ S $ 是好字符串。这里,某个数列的第 $ i $ 项是**高项**,当且仅当该项是该数列第 $ 1 $ 项到第 $ i $ 项中的最大值。 请判断是否存在好字符串,若存在请输出字典序最小的一个。

输入格式

输入从标准输入读入,格式如下: > $ N $ $ P_1 $ $ P_2 $ $ ... $ $ P_N $

输出格式

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

说明/提示

## 限制 - $ 1\leq N\leq 2\times 10^5 $ - $ 1\leq P_i\leq N $ - $ P_1,\ P_2,\ ...,\ P_N $ 互不相同。 - 输入均为整数。 ## 样例解释 1 若取 $ S= $ `001001`,则 $ X=(3,\ 1,\ 6,\ 2) $,$ Y=(4,\ 5) $。$ X $ 中的高项为第 $ 1 $ 项和第 $ 3 $ 项。$ Y $ 中的高项为第 $ 1 $ 项和第 $ 2 $ 项。高项个数相等,因此 `001001` 是好字符串。不存在字典序更小的好字符串,所以答案为 `001001`。 由 ChatGPT 4.1 翻译