D. 日志标准化排序(log)

    传统题 1000ms 512MiB

日志标准化排序(log)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

给定 nn 行日志,每行恰好包含 5 个用空格分隔的字段,格式为:

date=YYYY-M-D time=H:M:S user=xxx action=yyy params=k1=v1&k2=v2&...

其中:

  • 年保证为四位数
  • 月/日/时/分/秒没有前导零(例如 2026-3-19: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. datetime 的月/日/时/分/秒均补齐两位(年保持四位不变)

  3. user 全部转成小写,数字不变

  4. params 中所有 key=value 按 key 的字典序升序排列后用 & 连接;若 params 为空则该字段为空串


排序规则

对标准化后的日志按以下键升序排序:

  1. 时间戳 YYYY-MM-DD HH:MM:SS
  2. user
  3. action
  4. params(整个字符串)

输入格式

第一行输入一个整数 nn

接下来 nn 行,每行一条日志。


输出格式

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


样例输入

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

数据范围

数据点编号 数据范围 特殊性质
1 n=1n=1 单条日志,params 为空
2 n10n \le 10 所有 params 均为空
3 n100n \le 100 user 均已为纯小写,无需转换
4 所有日志时间戳完全相同
5 n1000n \le 1000 每条 params 至多含一个键值对
6 n5000n \le 5000 月/日/时/分/秒均需补零
7 n104n \le 10^4 无特殊性质
8 n5×104n \le 5 \times 10^4 每条 params 键值对数量较多
9 n105n \le 10^5 无特殊性质
10

2026年常州"信息与未来"小学生编程思维展示活动-线上初赛

未参加
状态
已结束
规则
IOI
题目
6
开始于
2026-4-14 22:45
结束于
2026-5-26 14:45
持续时间
2.5 小时
主持人