Dreifache Sortierung: Häufigkeit, Länge, lexikographisch
Python
Hard
sorting
Aufgabe «Dreifache Sortierung: Häufigkeit, Länge, lexikographisch»
Gegeben ist eine Liste von Zeichenketten. Die Zeichenketten sollen nach drei Kriterien sortiert werden: zuerst absteigend nach der Häufigkeit des Vorkommens der Zeichenkette in der ursprünglichen Liste, dann aufsteigend nach der Länge der Zeichenkette, und schließlich lexikographisch (aufsteigend, standardmäßiger Zeichenkettenvergleich). Wenn zwei Zeichenketten dieselbe Häufigkeit und Länge haben, werden sie lexikographisch verglichen. Implementieren Sie die Sortierung ohne Verwendung der integrierten sort-Funktion mit einem benutzerdefinierten Schlüssel (verboten), sondern nur mit einer eigenen Sortierfunktion (z. B. Quicksort, Mergesort oder einer anderen). Eingabedaten: zuerst eine ganze Zahl N (1 ≤ N ≤ 10^5) — die Anzahl der Zeichenketten, dann N Zeichenketten. Geben Sie die Zeichenketten in sortierter Reihenfolge aus, jede in einer neuen Zeile. Zeitbegrenzung: 2 Sekunden, Speicherbegrenzung: 256 MB.
Eingabeformat
Die erste Zeile enthält eine ganze Zahl N (1 ≤ N ≤ 10^5). Danach folgen N Zeichenketten, jede kann beliebige druckbare Zeichen (außer Leerzeichen) enthalten, die Länge der Zeichenkette beträgt 1 bis 20 Zeichen.
Ausgabeformat
Geben Sie N Zeichenketten in der geforderten Reihenfolge aus, jede in einer separaten Zeile.
Beispiele
Beispiel 1
EINGABE
1 10
AUSGABE
17
Beispiel 2
EINGABE
5
3 1 4 1 5
AUSGABE
3 1 4 1 5
main.py