#1721. 【模板】离散化

【模板】离散化

【模板】离散化

题目背景

请注意 aia_i 的范围,使用合适的数据类型。

尤其是 4040 分且 #4,#5,#6,#8,#9,#10 WA 时。


离散化。

离散化本质上可以看成是一种哈希,其保证数据在哈希以后仍然保持原来的全/偏序关系。

通俗地讲就是当有些数据因为本身很大或者类型不支持,自身无法作为数组的下标来方便地处理,而影响最终结果的只有元素之间的相对大小关系时,我们可以将原来的数据按照从大到小编号来处理问题,即离散化。

用来离散化的可以是大整数、浮点数、字符串等等。

—— OI Wiki

题目描述

输入一个数列 aa,输出数列 bb,bib_i 为 aia_i 在所有数值中的排名。

xx 的排名定义为 aa 中小于 xx 的数值的种类数 +1+1 (相同的数值只算一次)。

输入格式

第一行为一个整数 nn,表示 aa 的长度。
第二行 nn 个整数,第 ii 个表示 aia_i。

输出格式

一行,nn 个整数,表示 bb。

输入输出样例 #1

输入 #1

6
100 200 300 200 100 200

输出 #1

1 2 3 2 1 2

输入输出样例 #2

输入 #2

3
123456 123456 123456

输出 #2

1 1 1

输入输出样例 #3

输入 #3

10
292 -48 -292 -406 292 -149 46 -866 46 -48 

输出 #3

7 5 3 2 7 4 6 1 6 5

说明/提示

对于 100%100\% 的数据,1≤n≤2×1051 \le n \le 2\times10^5,−1018≤ai≤1018-10^{18}\le a_i \le 10^{18}。

本题不卡 Python。