20. 使用 std::map 和 std::vector 进行序列压缩

C++ Medium STL

任务 «20. 使用 std::map 和 std::vector 进行序列压缩»

给定一个整数序列。需要对该序列进行压缩:将每个数字替换为其首次出现时的序号(从1开始)。每个数字的序号必须是唯一的。使用 `std::map` 存储数字与其序号的对应关系,并按原始序列的顺序输出结果。

输入格式

第一行包含一个整数 N (1 ≤ N ≤ 10^6)。第二行包含 N 个由空格分隔的整数,数值范围为 -10^9 到 10^9。

输出格式

输出 N 个整数——原始序列中每个数字的序号,用空格分隔。

示例

示例 1

输入
5 1 2 1 3 2
输出
1 2 1 3 2

示例 2

输入
2 1 3.0 2 4.0 5.0
输出
28.27 20.00

示例 3

输入
3 100 100 100
输出
1 1 1

示例 4

输入
1 2 2.5 3.5
输出
1

示例 5

输入
6 ADD Write report 3 ADD Fix bug 5 ADD Update docs 2 PENDING COMPLETE Fix bug PENDING
输出
Fix bug, Write report, Update docs Write report, Update docs
main.cpp