题意描述
离散化在许多题目中可以简化空间的分配方式,降低编程复杂度。现在你得到了一个数组 a[]
,你需要将其离散化得到数组 b[]
,满足对于任意 i,j:
- 若 ai=aj,则 bi=bj;
- 若 ai>aj,则 bi>bj。
除此之外,你还需要保证,如果存在 i 使得 bi=x>1,则存在 j 使得 bj=x−1。并且存在 k 满足 bk=1,对于任意 k 满足 bk≥1。
可以证明这样的离散方式是唯一的。
输入描述
第一行一个整数 n,表示数组长度。
第二行 n 个整数 ai,表示 a[]
数组。
输出描述
一行 n 个整数 bi,表示 b[]
数组。
样例输入 1
5
5 10 25 10 30
样例输出 1
1 2 3 2 4
数据范围
对于所有数据,1≤n≤105,0≤ai≤109。
子任务 1(30 分):ai 互不相同;
子任务 2(70 分):没有特殊限制。