#6740. 审批系统

审批系统

题目描述

某市上线了一套自动化政务审批系统。由于该系统由多个分布式子模块构成,其原始生成的事务记录(Record)存在格式不统一、键值对无序等问题,导致审计部门难以直接检索。为了提高审计效率,需要你编写一个重构程序,对 nn 条原始记录进行标准化转换并按指定规则全局排序。

每条原始记录严格包含5个属性字段,以空格分隔,格式如下: date=YYYY-M-D time=H:M:S user=UID action=Operation params=Args

标准化转换规则

  1. 时间戳补全:年份保持4位(保证输入的就是4位),月份、日期、小时、分钟、秒钟若不足两位,需在前方补 0 补齐至2位(例如:2026-3-1 转换为 2026-03-019:2:5 转换为 09:02:05)。
  2. 标识符归一化user 字段中包含的大写英文字母需全部转换为小写,数字保持不变。
  3. 参数域重组params 字段包含若干以 & 连接的键值对(格式为 key=value)。需将所有键值对按照 key 的字典序升序重新排列并连接。若 params 后面没有内容,则视为空字符串。
  4. 序号生成:重构后的每条记录前需冠以序号及点号(如 1.)。为保证对齐,所有序号的位数必须与最大序号的位数一致,不足部分在前方补 0

全局排序规则

将所有记录转换完成后,按照以下优先级进行升序排序:

  1. 时间戳:按 YYYY-MM-DD HH:MM:SS 的字典序排列。
  2. 操作用户:若时间相同,按归一化后的 user 字典序排列。
  3. 操作类型:若上述项均相同,按 action 的字典序排列。
  4. 参数字符串:若上述项均相同,按重组后的 params 全字符串字典序排列。

输入格式

第一行输入一个正整数 nn,表示待处理的记录总数。 接下来 nn 行,每行一条原始格式记录。

输出格式

输出共 nn 行,为经过标准化处理并排序后的记录。 每行格式:序号. YYYY-MM-DD HH:MM:SS user action params 注意:. 后面有一个空格。

样例输入 1

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

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

样例输入 2

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=

样例输出 2

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

样例输入 3

12
date=2025-1-1 time=0:0:0 user=Root01 action=init params=
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=alpha params=
date=2026-1-1 time=10:10:10 user=alice action=check params=
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-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-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-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

样例输出 3

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

数据范围

1n1051 \le n \le 10^5

  • user 仅含大小写字母、数字
  • action 仅含小写字母
  • params 内各个 key 互不相同
  • 单条 params 键值对数量不超过 50