#C067. NanoJudge 危机之评测姬的逆袭

NanoJudge 危机之评测姬的逆袭

T606528 NanoJudge 危机之评测姬的逆袭

题目背景

NanoJudge 突然遭到不明攻击!一个 ID 为 "H4xx0r" 的用户在 1 秒内提交了 114514 份答案,导致评测队列严重堵塞。更糟糕的是,这个家伙的提交记录中混入了大量 "TLE"、"MLE"、"RTE" 结果,就像在评测姬的咖啡里加了汽油一样!

现在你需要帮助崩溃的评测姬处理这些提交记录,找出所有合法提交,并计算出:

1.攻击者 "H4xx0r" 的合法提交次数 2.第一个合法提交和最后一个合法提交的时间间隔(秒数)

题目描述

提交合法条件: 1.提交结果为 "AC" 2.同一用户每秒内最多允许 5 次提交(超出部分视为非法) 3.攻击者的提交必须被特别检查(就算符合前两条也要算入攻击次数)

输入格式

第一行一个整数 n (1 ≤ n ≤ 1e5) 接下来 n 行,每行格式:HH:MM:SS username result 保证时间按提交顺序递增(但可能存在同一秒的多个提交)

输出格式

两行: 第一行输出 "H4xx0r x"(x 是攻击者的合法提交次数) 第二行输出 "Time y"(y 是时间间隔,若合法提交不足 2 个则输出 0)

输入输出样例 #1

输入 #1

10
00:00:01 alice AC
00:00:02 H4xx0r WA
00:00:02 H4xx0r AC
00:00:02 H4xx0r AC
00:00:02 H4xx0r AC
00:00:02 H4xx0r AC
00:00:02 H4xx0r AC  ← 这秒内第6次提交
00:00:03 bob TLE
00:00:04 H4xx0r AC
00:01:00 H4xx0r AC

输出 #1

H4xx0r 5
Time 56

说明/提示

题解思路: 使用 unordered_map 记录每个用户每秒的提交次数 维护合法提交的最小和最大时间戳 特别注意攻击者的所有合法提交都要计数 时间转换为总秒数便于计算差值

幽默提示: 评测姬一边哭一边说:"你们不要再提交啦!我的咖啡机都开始报 Segmentation Fault 了!"