问题 5638 --器件检测

5638: 器件检测★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 47  解决: 17
[提交][状态][命题人:]

题目描述

有器件共n个,要用一台检测设备检测。每个送检器件的信息包含送达时间、检测时长和优先级。优先级有m(1<m<6)个等级,由高到低分别用0~m-1的整数表示。每个机器件的送达时间各不相同。已送达的器件会按照各优先级通道分别排队,先到达先入队。设备每次检测都从当前各非空队列中,选取优先级最高的队列的队首器件出队进行检测。(同一时刻出现入队和出队时,先处理入队)

编写程序模拟检测过程,计算所有器件的平均等待时长,其中每个器件等待时长为其开始检测的时间与送达时间的时间差。(时间单位均为秒)

输入

一个正整数n表示器件的总个数(1<=n<=10000)

一个正整数m表示器件的优先级范围(1<m<6)

对于每个器件输入三个正整数x,y,z。其中x表示送达的时间,y表示检测的时长,z表示优先级数值。其中数据按照送达的时间升序排列。

输出

输出一个浮点数ans,表示所有器件的平均等待时长,保留两位小数。
样例输入
Copy
4
3
0 3 2
1 1 2
2 1 1
4 3 0
样例输出
Copy
1.75

提示

对于样例,执行顺序为A-C-D-B。

时间为0时,只有一个器件可以检测,所以第一个器件进行检测,结束时时间为3,等待时间为0

时间为3时,第二个第三个都可以检测,但是第三个优先级高,所以先检测第三个,结束时间为4,等待时间为3-2=1

时间为4时,第二个第四个都可以检测,但是第四个优先级高,所以先检测第四个,结束时间为7,等待时间为0

时间为7时,最后检测第二个,等待时间为7-1=6

平均时间7/4=1.75

来源

[提交][状态]