C1691 [Wannafly冬令营2018Day7]线性探查法(困难版)

内存限制:256 MB 时间限制:1000 ms

题目描述

在大学里选修过数据结构的同学大部分都知道 hash 算法的线性探查法:

假设有一个元素互不相同的正整数数组 $a[1...n]$,我们用以下方法得到数组 $b[0...n-1]$:

初始时 $b[i]$ 都为 $-1$,我们对 $i=1...n$ 依次插入 $a[i]$,假设现在要插入的数是 $x$,首先我们找到 $x \% n$ 这个位置,如果 $b[x\%n]=-1$,则令 $b[x \% n]=x$,之后结束这次插入;否则看 $b[(x+1) \% n]$ 是否等于 $-1$,如果等于则令 $b[(x+1) \% n]=x$,如果不等于,则继续看 $(x+2) \% n$....,直到找到一个位置。

完成所有插入后,我们会得到一个数组 $b$,现在给定这个数组 $b$,你需要求一个字典序最小的 $a[1...n]$

输入格式

第一行一个正整数 $n (1\leq n\leq 10^5)$

第二行 $n$ 个互不相同的正整数,表示 $b[0...n-1]$,$(1\leq b[i]\leq 2\times 10^9)$

输入数据保证一定有解

输出

输出 $n$ 个正整数,表示字典序最小的 $a[1...n]$

字典序的比较是先比较 $a[1]$,再比较 $a[2]$...以此类推

样例

样例输入 1

5 20 16 12 8 4

样例输出 1

4 8 12 16 20

提示