#ASC202629. 传感器重复触发过滤
传感器重复触发过滤
题目背景
智能车驶过终点线时,光电传感器可能在短时间内连续触发。为了避免一次通过被重复记录,计时程序需要识别真正的触发边沿,并设置最短记录间隔。
题目描述
传感器每次采样得到一个电平:0 表示未检测到终点线,1 表示检测到终点线。系统还记录了每次采样的时间,单位为毫秒。
传感器在第一条采样记录之前的电平视为 0。只有电平从 0 变为 1 的采样才是候选触发;电平持续为 1 时不会产生新的候选触发。
第一个候选触发总是被接受。此后,若当前候选触发时间与上一次被接受的触发时间之差大于或等于 d,就接受它;否则忽略它。被忽略的候选触发不改变上一次被接受的时间,但仍按实际采样电平继续判断后续边沿。
请按时间顺序输出所有被接受的触发时间,并计算它与前一次被接受触发的时间间隔。第一次被接受触发的间隔记为 0。
输入格式
第一行包含两个整数 n、d,分别表示采样记录数和最短记录间隔。
接下来 n 行,每行包含两个整数 t、x,表示采样时间和传感器电平。采样时间严格递增,x 为 0 或 1。
输出格式
第一行输出被接受的触发次数 m。
接下来 m 行,每行输出两个整数 time interval,分别表示触发时间和与前一次被接受触发的间隔。若 m 为 0,只输出一行 0。
样例
12 5
0 1
1 1
2 0
3 1
4 0
5 1
6 1
7 0
8 1
9 1
10 0
12 1
3
0 0
5 5
12 7
样例解释
时间 3 和 8 的候选触发距离上一次被接受的触发都不足 5 毫秒,因此被忽略。时间 1 和 6 的电平虽然为 1,但没有发生从 0 到 1 的变化。
数据范围
1 ≤ n ≤ 100000,0 ≤ d ≤ 1000000000,0 ≤ t ≤ 1000000000。所有采样时间严格递增。
时间限制:1 秒;内存限制:256 MiB。