Tri par fréquence avec conservation de l’ordre

Rust Hard sorting

Tâche «Tri par fréquence avec conservation de l’ordre»

Étant donné un tableau d’entiers. Il faut le trier par ordre décroissant de la fréquence d’apparition des éléments. Si deux éléments apparaissent le même nombre de fois, ils doivent être placés dans l’ordre de leur première apparition dans le tableau initial. Il est nécessaire d’implémenter un algorithme de tri avec une complexité temporelle O(n log n) et une utilisation de mémoire supplémentaire O(n).

Format d\ entrée

La première ligne contient un entier n (1 ≤ n ≤ 10^5). La deuxième ligne contient n entiers séparés par des espaces.

Format de sortie

Affichez n entiers séparés par des espaces — le tableau trié.

Exemples

Exemple 1

ENTRÉE
3 3 2 1
SORTIE
3 2 1
main.rs