Ordenamiento por frecuencia con conservación del orden

Swift Hard sorting

Tarea «Ordenamiento por frecuencia con conservación del orden»

Dado un arreglo de números enteros. Ordénelo en orden descendente por la frecuencia de aparición de los elementos. Si dos elementos tienen la misma frecuencia, entonces deben colocarse en el orden de su primera aparición en el arreglo original. Implemente un algoritmo con complejidad temporal O(n log n) y no utilice funciones de ordenamiento integradas con comparadores personalizados.

Formato de entrada

La primera línea contiene un número entero n (1 ≤ n ≤ 10^5) — la cantidad de elementos. La segunda línea contiene n números enteros separados por espacios.

Formato de salida

Imprima n números enteros separados por espacios — el arreglo ordenado.

Ejemplos

Ejemplo 1

ENTRADA
4 1 2 2 3
SALIDA
2 2 1 3

Ejemplo 2

ENTRADA
6 1 2 3 4 5 6
SALIDA
1 2 3 4 5 6

Ejemplo 3

ENTRADA
1 7
SALIDA
7
main.swift