Eliminación de duplicados de un array ordenado con límite de repeticiones

C++ Medium arrays

Tarea «Eliminación de duplicados de un array ordenado con límite de repeticiones»

Dado un array de enteros ordenado de forma no decreciente. Es necesario eliminar los duplicados de modo que cada elemento aparezca como máximo dos veces, y devolver la longitud del nuevo array. Los elementos restantes del array después de esta longitud no son importantes. La solución debe realizarse sin usar memoria adicional (in-place).

Formato de entrada

La primera línea contiene un número entero N (1 ≤ N ≤ 10^5) — la cantidad de elementos en el array. La segunda línea contiene N números enteros separados por espacios — los elementos del array, ordenados de forma no decreciente.

Formato de salida

Un número entero — la longitud del array después de eliminar los duplicados (la cantidad de elementos que aparecen como máximo dos veces).

Ejemplos

Ejemplo 1

ENTRADA
1 5
SALIDA
1

Ejemplo 2

ENTRADA
5 1 2 3 4 5 7
SALIDA
5

Ejemplo 3

ENTRADA
6 1 1 1 2 2 3
SALIDA
5
main.cpp