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