20. Сжатие последовательности с помощью std::map и std::vector

C++ Средний 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