Sortierung nach Häufigkeit unter Beibehaltung der Reihenfolge

Swift Hard sorting

Aufgabe «Sortierung nach Häufigkeit unter Beibehaltung der Reihenfolge»

Gegeben ist ein Array ganzer Zahlen. Sortieren Sie es absteigend nach der Häufigkeit des Vorkommens der Elemente. Wenn zwei Elemente die gleiche Häufigkeit haben, dann sollen sie in der Reihenfolge ihres ersten Auftretens im ursprünglichen Array angeordnet werden. Implementieren Sie einen Algorithmus mit einer Zeitkomplexität von O(n log n) und verwenden Sie keine integrierten Sortierfunktionen mit benutzerdefinierten Vergleichsfunktionen.

Eingabeformat

Die erste Zeile enthält eine ganze Zahl n (1 ≤ n ≤ 10^5) — die Anzahl der Elemente. Die zweite Zeile enthält n ganze Zahlen, getrennt durch Leerzeichen.

Ausgabeformat

Geben Sie n ganze Zahlen, getrennt durch Leerzeichen, aus — das sortierte Array.

Beispiele

Beispiel 1

EINGABE
4 1 2 2 3
AUSGABE
2 2 1 3

Beispiel 2

EINGABE
6 1 2 3 4 5 6
AUSGABE
1 2 3 4 5 6

Beispiel 3

EINGABE
1 7
AUSGABE
7
main.swift