P15033 [UOI 2021 II Stage] 字典序

题目描述

最近有人送给哥萨克一个包含 $n$ 个整数的数组 $a$。 胡子立刻想要对数组的元素进行排序,使得排序后数组中任意两个相邻的数字都不相同。在所有这样的排序中,他想找到字典序最小的那个。 回忆一下,字典序定义如下。假设有两个数组。找到第一个两个数组元素不同的位置。如果在该位置第一个数组的元素小于第二个数组的元素,则第一个数组字典序小于第二个数组;否则,第一个数组字典序大于第二个数组。例如,以下不等式成立:$[10, 3, 1] < [10, 4, 5]$, $[1, 1, 1] < [1, 2, 3]$, $[1, 2, 3] < [10, 10, 10]$。

输入格式

第一行包含一个整数 $n$ $(1 \leq n \leq 5 \cdot 10^5)$ —— 数组的元素个数。 第二行包含 $n$ 个整数 $a_1, a_2, ..., a_n$ $(1 \leq a_i \leq 5 \cdot 10^5)$ —— 数组的元素。

输出格式

如果无法对哥萨克的数组进行排序,则输出单个数字 $-1$。 否则,输出 $n$ 个整数 —— 哥萨克的数组的字典序最小排序。

说明/提示

### 样例说明 在第一个样例中,存在唯一的排序。 在第二个样例中,还存在其他排序,例如:$[1, 2, 3, 4, 1, 2]$ 或 $[1, 4, 1, 2, 3, 2]$。但所有这些排序在字典序上都大于 $[1, 2, 1, 2, 3, 4]$。 在第三个样例中,不存在有效的排序(数组中总会有两个 $1$ 出现在相邻位置)。 ### 评分细则 本题采用 **按测试点** 评分。一些额外的限制条件: - (5 分): $n \leq 10^3, a_i \leq 2$ - (10 分): $n \leq 10^3, a_i \leq 3$ - (25 分): $n \leq 10^3, a_i \leq 5 \cdot 10^5$ - (5 分): $n \leq 5 \cdot 10^5, a_i \leq 2$ - (10 分): $n \leq 5 \cdot 10^5, a_i \leq 3$ - (45 分): $n \leq 5 \cdot 10^5, a_i \leq 5 \cdot 10^5$ 翻译由 DeepSeek V3 完成