Classificação tripla: frequência, comprimento, lexicograficamente

Python Hard sorting

Tarefa «Classificação tripla: frequência, comprimento, lexicograficamente»

Dada uma lista de strings. É necessário ordenar as strings por três critérios: primeiro pela frequência de ocorrência da string na lista original em ordem decrescente, depois pelo comprimento da string em ordem crescente e, finalmente, lexicograficamente (em ordem crescente, comparação padrão de strings). Se duas strings tiverem a mesma frequência e o mesmo comprimento, elas são comparadas lexicograficamente. Implemente a ordenação sem usar a função sort integrada com chave personalizada (proibido), e apenas com sua própria função de ordenação (por exemplo, ordenação rápida, ordenação por mesclagem ou outra). Dados de entrada: primeiro um inteiro N (1 ≤ N ≤ 10^5) — o número de strings, depois N strings. Imprima as strings na ordem ordenada, cada uma em uma nova linha. Limite de tempo: 2 segundos, de memória: 256 MB.

Formato de Entrada

A primeira linha contém um inteiro N (1 ≤ N ≤ 10^5). Em seguida, vêm N strings, cada uma pode conter qualquer caractere imprimível (exceto espaços), o comprimento da string varia de 1 a 20 caracteres.

Formato de Saída

Imprima N strings na ordem exigida, cada uma em uma linha separada.

Exemplos

Exemplo 1

ENTRADA
1 10
SAÍDA
17

Exemplo 2

ENTRADA
5 3 1 4 1 5
SAÍDA
3 1 4 1 5
main.py