Magia vetorial: remoção de duplicatas mantendo a ordem

C++ Hard vectors

Tarefa «Magia vetorial: remoção de duplicatas mantendo a ordem»

Dado um vetor de números inteiros. É necessário remover todas as duplicatas, mantendo apenas a primeira ocorrência de cada elemento, e a ordem dos elementos deve ser preservada. Implemente uma função que recebe um vetor e retorna um novo vetor sem duplicatas. É proibido usar std::set ou std::unordered_set. Dados de entrada: primeiro um número inteiro N (1 ≤ N ≤ 10^5) — quantidade de elementos, depois N números inteiros, cada um em módulo não excedendo 10^9. Imprima o vetor resultante separado por espaços.

Formato de Entrada

Primeira linha: um número inteiro N (1 ≤ N ≤ 10^5). Segunda linha: N números inteiros separados por espaços.

Formato de Saída

Uma linha: elementos do vetor resultante separados por espaços.

Exemplos

Exemplo 1

ENTRADA
5 1 2 3 2 1
SAÍDA
1 2 3

Exemplo 2

ENTRADA
6 4 5 6 5 4 3
SAÍDA
4 5 6 3

Exemplo 3

ENTRADA
5 1 2 3 4 5
SAÍDA
1 2 3 4 5

Exemplo 4

ENTRADA
4 7 7 7 7
SAÍDA
7

Exemplo 5

ENTRADA
8 2 5 2 8 5 6 8 8
SAÍDA
2 5 8 6
main.cpp