Tri-sort : fréquence, longueur, lexicographique

Python Hard sorting

Tâche «Tri-sort : fréquence, longueur, lexicographique»

Une liste de chaînes est donnée. Il faut trier les chaînes selon trois critères : d'abord par ordre décroissant de la fréquence d'apparition de la chaîne dans la liste initiale, ensuite par ordre croissant de la longueur de la chaîne, et enfin lexicographiquement (par ordre croissant, comparaison standard des chaînes). Si deux chaînes ont la même fréquence et la même longueur, elles sont comparées lexicographiquement. Implémentez le tri sans utiliser la fonction intégrée sort avec une clé personnalisée (interdit), mais uniquement avec votre propre fonction de tri (par exemple, tri rapide, tri fusion ou autre). Données d'entrée : d'abord un entier N (1 ≤ N ≤ 10^5) — le nombre de chaînes, puis N chaînes. Affichez les chaînes dans l'ordre trié, chacune sur une nouvelle ligne. Limite de temps : 2 secondes, limite de mémoire : 256 Mo.

Format d\ entrée

La première ligne contient un entier N (1 ≤ N ≤ 10^5). Ensuite suivent N chaînes, chacune peut contenir tout caractère imprimable (sauf les espaces), la longueur de la chaîne est de 1 à 20 caractères.

Format de sortie

Affichez N chaînes dans l'ordre requis, chacune sur une ligne séparée.

Exemples

Exemple 1

ENTRÉE
1 10
SORTIE
17

Exemple 2

ENTRÉE
5 3 1 4 1 5
SORTIE
3 1 4 1 5
main.py