3715: 对联(第三轮01)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

要过年了,大家开始对对联, 即一个人写出上联,另一个人来对下联。现在给定 一个长度为 n  的上联, 为了方便读入,上联中的每个字都用一个正整数代替。 你需要为这个上联写一个下联,要求如下:

1. 下联必须都是正整数

2. 下联中的每一个正整数都不能在上联出现过

3. 上联中的第 i  个正整数和下联中的第 i  个正整数对应。你可以任意指定对应 关系,但是对应关系必须统一且唯一。例如若你规定上联中的正整数 3  对应下 联中的正整数  1, 那么上联中的另一个非 3  的数就不能对应正整数  1, 且上联

中的所有 3  都必须对应  1。

由于你可以任意指定对应关系,所以可能的下联有多种,你需要输出字典序最小 的一种。

输入

第一行输入一个正整数 n, 表示数字的个数。接下来一行包含 n  个整数, 分别 表示每一个正整数。

输出

输出 n  个整数,表示下联。

样例输入 复制

3 3 4 2 4 7

样例输出 复制

1 1 5 6 5 8

提示

【样例 1 输入】

6

3 3 4 2 4 7

【样例 1 输出】

1 1 5 6 5 8

【样例 1 说明】

 3  对应  1, 4  对应  5, 2  对应  6, 7  对应  8,则下联为  [1,1,5,6,5,8]。此为 字典序最小的对联,若令 3  对应 9,则下联为  [9,9,5,6,5,8],也是一种合法的下 联,但是不是题目所求的字典序最小的下联。

【样例 2 输入】

1 2 3

【样例 2 输出】

4 5 6

【样例 3 输入】

8

11 1 2 11 1 5 6 7 8

【样例 3 输出】

3 4 8 3 4 9 10 12

【数据范围】

对于 20%  的数据,有  1 ≤ n, ai  ≤ 1000

对于 40%  的数据,有  1 ≤ n ≤ 100000,1 ≤ ai  ≤ 100

对于 60%  的数据,有  1 ≤ n, ai    ≤ 100000

对于另外 20%  的数据,有  1 ≤ n ≤ 1000,1 ≤ ai  ≤ 10^9

对于  100%  的数据,有  1 ≤ n ≤ 100000,1 ≤ ai  ≤ 10^9

来源/分类