三重排序:频率、长度、字典序

Python Hard sorting

任务 «三重排序:频率、长度、字典序»

给定一个字符串列表。需要根据三个条件对字符串进行排序:首先按字符串在原始列表中出现的频率降序排列,然后按字符串长度升序排列,最后按字典序(升序,标准字符串比较)排列。如果两个字符串具有相同的频率和长度,则按字典序比较。请实现排序功能,禁止使用带有自定义键的内置 sort 函数,只能使用自定义的排序函数(例如快速排序、归并排序或其他排序算法)。输入数据:首先是一个整数 N(1 ≤ N ≤ 10^5)——字符串的数量,然后是 N 个字符串。输出排序后的字符串,每个字符串占一行。时间限制:2 秒,内存限制:256 MB。

输入格式

第一行包含一个整数 N (1 ≤ N ≤ 10^5)。接下来有 N 行,每行可以包含任意可打印字符(不含空格),字符串长度从 1 到 20 个字符。

输出格式

输出 N 行内容,按要求的顺序排列,每行单独占一行。

示例

示例 1

输入
1 10
输出
17

示例 2

输入
5 3 1 4 1 5
输出
3 1 4 1 5
main.py