#HXOJ2760. 动态数组题五:冒险小队

提交24 通过13
通过率54.2%
时间限制1000ms
内存限制128MiB

题目描述

题目描述

冒险者工会每天都会迎来一大批寻找组队队友的冒险者。

一个基本的冒险小队需要有如下配置:一个战士、一个弓箭手、一个魔法师。

如果集齐一个冒险小队,队伍就可以出发。因为队伍太长了,因此后来的人会优先和队尾的人组队。

现在给出冒险者来的序列,每当有冒险小队集齐的时候,计算出组队时的三个人中的最长等待时间。

输入格式

第一行一个整数 n(1≤n≤10⁵),表示来的冒险者人数。

接下来 n 行,每行一个字符串 v 和一个整数 t(1≤t≤10⁸),分别代表当前冒险者的职业(warrior 表示战士,archer 表示弓箭手,magician 表示魔法师),以及冒险者的到来的时间(输入顺序按到来先后顺序已排好序)。

输出格式

若干个整数,每个整数占一行。当有冒险小队集齐的时候,计算出组队时的三个人中的最长等待时间。

输入样例 #1

10
magician 682
archer 842
magician 1841
magician 2081
warrior 2575
magician 3269
archer 4009
warrior 6454
warrior 6679
warrior 7370

输出样例 #1

1733
3185

输入样例 #2

7
magician 1
archer 5
magician 12
warrior 22
warrior 35
archer 38
magician 44

输出样例 #2

17
37

输入样例 #3

7
magician 217
archer 220
magician 226
warrior 235
warrior 247
archer 249
magician 254

输出样例 #3

15
32

提示

样例解释

从每一行的长度和题目要求来看,只能组成两个小队。

再根据优先考虑和队尾的人组队,那么在 2575 时间到来的 warrior 职业的冒险者只能选择和 2081 时间到来的 magician 以及 842 时间到来的 warrior 组队。

此时整队的到来时间最大相差为 2575−842=1733,也就是三人中最长的等待时间。

同理,第二队由 3269、4009、6454 三个时间到来的人组成,三人中最长的等待时间为6454−3269=3185。

数据范围

第一行一个整数 n(1≤n≤10⁵),表示来的冒险者人数。

接下来 n 行,每行一个字符串 v 和一个整数 t(1≤t≤10⁸),分别代表当前冒险者的职业(warrior 表示战士,archer 表示弓箭手,magician 表示魔法师),以及冒险者的到来的时间(输入顺序按到来先后顺序已排好序)。