Logo Universal Online Judge

UOJ

时间限制:1 s 空间限制:512 MB
统计

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.

提示

  • 本题的难点有两个:
    • 如何完整存下所有输入文本, 因为 $n \times L \gg 20\ \mathrm{MB}$, 且远远超出题目的内存限制.
    • 如何对百万量级的元素进行较快的排序.
  • 动态数组, 归并排序 (Merge Sort), 使用指针实现数组排序.