题目描述
在一项关于家庭用电量的研究中,研究人员为新西兰的家庭构建了一个模拟器。该软件会模拟每个家庭中电器的耗电量。该项目的目标是识别用电量中的 “微峰值”—— 即总耗电量超过特定限值的短暂时间段。
模拟开始前,所有电器均处于关闭状态(不耗电)。在模拟期间的不同时间点,电器会增加或减少其耗电量。每当发生这种情况时,模拟器就会输出一条记录,包含电器编号、自该电器上一次变化以来的时间(以秒为单位,若为该电器的第一条记录则自模拟开始时算起),以及功率变化值(以瓦为单位)。对于某个特定电器,其记录是按顺序排列的,但遗憾的是,该模拟器的编写方式导致不同电器的记录被随机交错。具体来说,不能假设电器 A 的记录写在电器 B 的记录之前,就表示电器 A 的事件发生在电器 B 的事件之前。
你的任务是编写一个程序,读取电器记录文件并统计发生的微峰值数量。对于给定的模拟,你会获得一个功率阈值 M 和一个时间阈值 S。当功率水平 P 满足以下条件时,即发生一次微峰值:P>M,且持续时间 ts 满足 1≤ts≤S(单位:秒)。
输入格式
你的输入是一次模拟的数据。第一行包含三个整数(T、M 和 S),以单个空格分隔。其中,T 是模拟的总时长(秒),M 是功率阈值,S 是最大峰值持续时间。
接下来是 N 行功率变化记录。每行包含三个整数(a、t 和 p),同样以单个空格分隔:a 是电器编号,t 是自该电器上一次变化以来的时间(秒),p 是功率变化值(瓦)。
一行包含三个零的记录表示模拟数据结束。
微峰值的计数需满足以下条件:
在模拟期间的某个时间点,总功率从小于或等于阈值上升至超过阈值;
总功率在模拟期间再次下降至阈值或以下;
峰值的持续时间在 1 到 S 秒(含)之间。
0 ≤ T ≤ 100,000
0 ≤ M ≤ 10⁹
1 ≤ S ≤ 1000
0 ≤ N ≤ 1,000,000
1 ≤ a ≤ 100,000
0 ≤ t ≤ T
-10,000 ≤ p ≤ 10,000
可以假设,任何电器的功率水平都不会变为负数,且总耗电量不会超过 1,000,000,000。
输出格式
对于每次模拟,需输出一行结果:观测到的微峰值数量。
样例数据
input
10 100 2
8 4 20
8 1 30
1 1 60
7 2 40
7 3 -20
1 5 -60
1 3 60
7 5 -20
8 1 -50
8 3 50
0 0 0
output
1