Remoção de duplicatas de um array ordenado com limite de repetições

C++ Medium arrays

Tarefa «Remoção de duplicatas de um array ordenado com limite de repetições»

Dado um array de inteiros ordenado em ordem não decrescente. É necessário remover as duplicatas de forma que cada elemento apareça no máximo duas vezes e retornar o comprimento do novo array. Os elementos restantes do array após esse comprimento não são importantes. A solução deve ser feita sem usar memória adicional (in-place).

Formato de Entrada

A primeira linha contém um inteiro N (1 ≤ N ≤ 10^5) — o número de elementos no array. A segunda linha contém N inteiros separados por espaços — os elementos do array, ordenados em ordem não decrescente.

Formato de Saída

Um único inteiro — o comprimento do array após a remoção das duplicatas (a quantidade de elementos que aparecem no máximo duas vezes).

Exemplos

Exemplo 1

ENTRADA
1 5
SAÍDA
1

Exemplo 2

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

Exemplo 3

ENTRADA
6 1 1 1 2 2 3
SAÍDA
5
main.cpp