6520: 日志标准化排序(log)

Memory Limit:512 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:557 Solved:62

Description

给定 $n$ 行日志,每行恰好包含 5 个用空格分隔的字段,格式为:
date=YYYY-M-D time=H:M:S user=xxx action=yyy params=k1=v1&k2=v2&...
其中:
- 年保证为四位数
- 月/日/时/分/秒没有前导零(例如 `2026-3-1`、`9:2:5`)
- `user` 可能含大小写字母与数字(无空格)
- `action` 只含小写字母
- `params` 由若干 `key=value` 用 `&` 连接,可能为空(即 `params=` 后面没有内容);不会存在重复的键;键值对顺序可能是乱的
你的任务是把每行日志标准化后,再按规则排序并输出。
标准化规则:将每条日志转换为如下格式:
no. YYYY-MM-DD HH:MM:SS user action params
1. `no.` 为排序后的日志序号;需添加前导零使所有序号位数相同(例如共 200 条时第 1 条序号为 `001.`,共 5 条时序号为 `1.`)
2. `date`、`time` 的月/日/时/分/秒均补齐两位(年保持四位不变)
3. `user` 全部转成小写,数字不变
4. `params` 中所有 `key=value` 按 key 的字典序升序排列后用 `&` 连接;若 `params` 为空则该字段为空串
排序规则:对标准化后的日志按以下键升序排序:
1. 时间戳 `YYYY-MM-DD HH:MM:SS`
2. `user`
3. `action`
4. `params`(整个字符串)

Input

第一行输入一个整数 n。
接下来 n 行,每行一条日志。

Output

输出 n 行,为标准化并排序后的日志。

Sample Input Copy

4
date=2026-3-1 time=9:2:5 user=Alice action=login params=b=2&a=1
date=2026-3-1 time=9:2:4 user=bob action=refund params=
date=2026-3-1 time=9:2:5 user=alice action=logout params=z=9
date=2026-3-1 time=9:2:5 user=alice action=login params=a=1

Sample Output Copy

1. 2026-03-01 09:02:04 bob refund 
2. 2026-03-01 09:02:05 alice login a=1
3. 2026-03-01 09:02:05 alice login a=1&b=2
4. 2026-03-01 09:02:05 alice logout z=9 

HINT

四条日志标准化过程:

  • 原始第 1 条:user=Alice 转小写为 aliceparams=b=2&a=1 按 key 排序后为 a=1&b=2,时间补零为 2026-03-01 09:02:05

  • 原始第 2 条:user=bob 已小写,params 为空,时间补零为 2026-03-01 09:02:04

  • 原始第 3 条:user=aliceparams=z=9(仅一个键值对,无需排序),时间补零为 2026-03-01 09:02:05

  • 原始第 4 条:user=aliceparams=a=1(已有序),时间补零为 2026-03-01 09:02:05

排序后:第 2 条时间最早排第 1;其余三条时间相同,再按 user/action/params 排序依次输出。

数据范围