QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#17984. 金利奇的保险箱

統計

黄金里奇为冒险岛勇士们举办了一个新的秘密保险箱活动。冒险岛勇士们可以通过在保险箱中输入密码来参与活动。此前举办的黄金保险箱和钻石保险箱活动,将奖品颁发给输入了最小唯一数字作为密码的勇士。

然而这一次,对于红宝石保险箱活动,黄金里奇计划投入大量资金,向所有冒险岛勇士发放相同数量的奖品。奖品的数量由冒险岛勇士们输入的密码决定。奖品数量的确定方式如下:

  • 第 $i$ 个冒险岛勇士输入一个整数 $A_i$ 作为密码。($0 \le A_i \le 10^9$;$1 \le i \le N$)
  • 设 $C_{lr}$ 为未在 $[A_l, A_{l+1}, \dots, A_{r-1}, A_r]$ 中出现的最小非负整数。($1 \le l \le r \le N$)
  • 奖品数量是所有可能的 $C_{lr}$ 值列表中未出现的最小非负整数。

$$\{C_{11}, C_{22}, C_{33}, C_{12}, C_{23}, C_{13}\} = \{0, 0, 1, 0, 1, 3\} \to 2$$

冒险岛勇士们试图聚在一起以获得尽可能多的奖品,但他们人数太多了,未能在达成统一结论的情况下就输入了所有的密码。

作为一名冒险岛勇士,幻影(Phantom)也参加了红宝石保险箱活动,并希望获得尽可能多的奖品。看到所有密码都已输入,作为冒险岛最强神偷的幻影想出了一个计划,通过修改密码来最大化可以获得的奖品数量。

对于幻影来说,直接修改其他冒险岛勇士输入的密码是小菜一碟,但这很容易被发现。因此,他计划仅改变已输入密码 $A_1, A_2, \dots, A_N$ 的顺序。

请找出幻影应该如何重新排列密码,使得奖品数量最大化。

输入格式

第一行包含一个整数 $N$,表示参与活动的冒险岛勇士数量。($1 \le N \le 10^6$)

第二行包含 $N$ 个空格分隔的整数 $A_1, A_2, \dots, A_N$。($0 \le A_i \le 10^9$)

输出格式

第一行输出可以获得的最多奖品数量。

第二行输出重新排列后的 $A_1, A_2, \dots, A_N$,用空格分隔。如果有多个可能的答案,输出其中任意一个。

样例

输入样例 1

3
1 2 0

输出样例 1

4
1 0 2

输入样例 2

3
1 3 0

输出样例 2

3
1 3 0

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.