某市上线了一套自动化政务审批系统。由于该系统由多个分布式子模块构成,其原始生成的事务记录(Record)存在格式不统一、键值对无序等问题,导致审计部门难以直接检索。为了提高审计效率,需要你编写一个重构程序,对 n 条原始记录进行标准化转换并按指定规则全局排序。
每条原始记录严格包含 5 个属性字段,以空格分隔,格式如下:
date=YYYY-M-D time=H:M:S user=UID action=Operation params=Args
标准化转换规则如下:
0 补齐至 2 位(例如:2026-3-1 转换为 2026-03-01,9:2:5 转换为 09:02:05)。user 字段中包含的大写英文字母需全部转换为小写,数字保持不变。params 字段包含若干以 & 连接的键值对(格式为 key=value)。需将所有键值对按照 key 的字典序升序重新排列并连接。若 params 后面没有内容,则视为空字符串。1.)。为保证对齐,所有序号的位数必须与最大序号的位数一致,不足部分在前方补 0。全局排序规则: 将所有记录转换完成后,按照以下优先级进行升序排序:
YYYY-MM-DD HH:MM:SS 的字典序排列。user 字典序排列。action 的字典序排列。params 全字符串字典序排列。第一行输入一个正整数 n,表示待处理的记录总数。
接下来的 n 行,每行包含一条原始格式的记录,各字段意义见题目描述。
输出共 n 行,为经过标准化处理并排序后的记录。
每行格式为:序号. YYYY-MM-DD HH:MM:SS user action params。(请注意:序号. 这里的 . 后面有一个空格)
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
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
5 date=2026-10-10 time=10:10:10 user=Beta action=process params=z=1&y=2&x=3 date=2026-10-10 time=10:10:10 user=Alpha action=process params= date=2026-10-10 time=10:10:10 user=Alpha action=process params=v=100 date=2026-10-10 time=10:10:09 user=Gamma action=alert params=msg=critical date=2026-10-10 time=10:10:10 user=Beta action=access params=
1. 2026-10-10 10:10:09 gamma alert msg=critical 2. 2026-10-10 10:10:10 alpha process 3. 2026-10-10 10:10:10 alpha process v=100 4. 2026-10-10 10:10:10 beta access 5. 2026-10-10 10:10:10 beta process x=3&y=2&z=1
12 date=2026-12-31 time=23:59:59 user=SystemAdmin action=restart params=mode=force&delay=0 date=2026-12-31 time=23:59:59 user=systemadmin action=restart params=delay=0&mode=force date=2025-1-1 time=0:0:0 user=Root01 action=init params= date=2026-6-15 time=12:0:0 user=User99 action=upload params=size=1024&type=png&name=test date=2026-6-15 time=12:0:0 user=user99 action=upload params=name=test&size=1024&type=png date=2026-6-15 time=8:30:5 user=Guest action=view params=id=101 date=2026-6-15 time=12:0:0 user=user99 action=download params=file=doc date=2026-1-1 time=10:10:10 user=Alice action=check params=a=1&A=2 date=2026-1-1 time=10:10:10 user=alice action=check params=A=2&a=1 date=2026-1-1 time=10:10:10 user=ALICE action=check params=A=2&a=1 date=2026-1-1 time=10:10:10 user=alice action=alpha params= date=2026-1-1 time=10:10:10 user=alice action=check params=
01. 2025-01-01 00:00:00 root01 init 02. 2026-01-01 10:10:10 alice alpha 03. 2026-01-01 10:10:10 alice check 04. 2026-01-01 10:10:10 alice check A=2&a=1 05. 2026-01-01 10:10:10 alice check A=2&a=1 06. 2026-01-01 10:10:10 alice check A=2&a=1 07. 2026-06-15 08:30:05 guest view id=101 08. 2026-06-15 12:00:00 user99 download file=doc 09. 2026-06-15 12:00:00 user99 upload name=test&size=1024&type=png 10. 2026-06-15 12:00:00 user99 upload name=test&size=1024&type=png 11. 2026-12-31 23:59:59 systemadmin restart delay=0&mode=force 12. 2026-12-31 23:59:59 systemadmin restart delay=0&mode=force
09:02:04,在所有记录中最细,故排序后位列第 1。user 转小写、params 重组后,其时间戳与 user 均相同。第 4 条的 params 为 a=1,第 1 条重组后为 a=1&b=2。因 a=1 的字典序小于 a=1&b=2,故第 4 条排在第 2 位,第 1 条排在第 3 位。action 为 logout,在 user 相同的情况下,其字典序大于 login,故排在最后。对于所有测试数据,保证 n \leq 10^5。user 仅含字母与数字,action 仅含小写字母。每个 params 内部的 key 互不相同,参数域中的键值对数量不超过 50 个。
| 数据点编号 | 数据范围 | 特殊性质 |
|---|---|---|
| 1 | n = 1 | 仅一条记录,且参数域为空 |
| 2 | n \leq 10 | 所有记录的参数域均为空 |
| 3 | n \leq 100 | 原始 user 字段已全部为小写 |
| 4 | n \leq 100 | 所有记录的时间戳字段完全一致 |
| 5 | n \leq 1000 | 记录的参数域中至多包含一个键值对 |
| 6 | n \leq 5000 | 所有的月/日/时/分/秒均需要进行补零操作 |
| 7 | n \leq 10^4 | 参数域中的键值对数量较多 |
| 8, 9, 10 | n \leq 10^4 | 无特殊性质 |