String
题目描述
输入 n 条字符串, 对这些字符串按长度从小到大排序, 如果长度相同则按照字典序排序, 随后依次输出排好序的字符串.
输入格式
输入共有 n + 1 行.
第 1 行为一个正整数 n.
接下来的 n 行, 每行为一条字符串.
输出格式
输出共有 n 行, 依次输出排好序的字符串, 每行一条.
样例
此样例为第一个测试点. 对于非纯数字输入的题目, 有时会把样例作为第一个测试点以方便调试.
样例输入
5
i-am-komeiji-koishi
i-love-tsinghua-university
what-a-sunny-day!
it's-9.15-dollars
happy-new-year
样例输出
happy-new-year
it's-9.15-dollars
what-a-sunny-day!
i-am-komeiji-koishi
i-love-tsinghua-university
说明
- 字符串中的所有字符均为可见字符 (
33 <= ascii 码 <= 126). - 输入文件大小
<= 20 MB. - 设每条字符串的长度为 $L$, 则
- 对于 $60\%$ 的数据,
1 <= n <= 2000,1 <= L <= 2000. - 对于 $100\%$ 的数据,
1 <= n <= 200000,1 <= L <= 200000.
- 对于 $60\%$ 的数据,
提示
- 本题的难点有两个:
- 如何完整存下所有输入文本, 因为 $n \times L \gg 20\ \mathrm{MB}$, 且远远超出题目的内存限制.
- 如何对百万量级的元素进行较快的排序.
- 动态数组, 归并排序 (Merge Sort), 使用指针实现数组排序.
