Tri des chaînes par longueur et par ordre lexicographique

C# Hard sorting

Tâche «Tri des chaînes par longueur et par ordre lexicographique»

Une chaîne contenant des mots séparés par des espaces est donnée. Il faut trier les mots d'abord par ordre croissant de longueur, et à longueur égale — par ordre lexicographique (décroissant). Afficher les mots triés séparés par des espaces. Contraintes : la longueur de la chaîne ne dépasse pas 10^5 caractères, les mots sont composés de lettres latines minuscules. La solution doit être efficace, utiliser les méthodes de tri intégrées.

Format d\ entrée

Une chaîne contenant des mots en lettres latines minuscules, séparés par exactement un espace. La longueur de la chaîne ne dépasse pas 100000 caractères.

Format de sortie

Une chaîne contenant les mêmes mots, triés par ordre croissant de longueur, et à longueur égale — par ordre lexicographique décroissant. Les mots sont séparés par exactement un espace.

Exemples

Exemple 1

ENTRÉE
cat dog apple banana
SORTIE
dog cat apple banana

Exemple 2

ENTRÉE
a bb ccc dd
SORTIE
a dd bb ccc

Exemple 3

ENTRÉE
5 12 34 21 43 15
SORTIE
5

Exemple 4

ENTRÉE
{"a":1,"b":{"c":2}} {"a":2,"b":{"d":3}}
SORTIE
{"a":1,"b":{"c":2}}
main.cs