单点时限: 2.0 sec
内存限制: 512 MB
ECNU 最近包下了一个拥有地上20层且仅有一个电梯的大楼举办峰会,每一个会场的同学们都在11:30准时下课。每到这个时候,同学们会使用同层瞬移不花费任何时间地到达他们所在楼层的电梯前,并排成一个队列在电梯跟前等待。
在任何一个时刻,只要这一层的队列当中存在想要往上的同学,这一层的向上按钮就会被按下,往下的按钮也是如此。
在11:30时,这个整栋楼唯一的电梯停留在零层(所有的同学都在1~20层),并准备好一次向上的运行进程。电梯向上的运行过程严格满足如下的规则:
如果电梯不满足向上运行的条件,那么它就会不花费时间地转换到向下运行的过程。(注意,电梯在同一层可能会开启两次。一次是以向上的状态,一次以向下的状态,可参见样例2)。类似地我们有以下的规则:
当电梯在某层开启了以后,会依次发生如下事件:
你需要计算在最后一个人到达目标楼层时的时间,时间的计算方式如下:
输出格式请参考样例。
第一行两个数,$n$表示人数,$W$表示电梯重量限制,任意时刻在电梯内的人重量之和不能超过$W$。
接下来$n$行,每行三个数$from_i, to_i, weight_i$,分别代表这个人的所在楼层,目标楼层和重量。在某一楼层当中,同学们在队列里的顺序与输入当中给出的顺序相同。但是楼层可能是打散的。也就是说,在输入的$n$行当中,如果你把某一楼层之外的人所在的行移去所形成的队列,就是他们在该楼层电梯外等待的队列。
一行一个字符串表示时间,格式为hh:mm:ss
。如开始的时刻,就可以表示为11:30:00
。
4 5 1 2 5 1 3 5 2 3 5 3 2 5
11:32:11
3 23 11 20 16 17 11 15 10 20 15
11:34:32
3 1000 1 2 5 1 3 5 2 3 5
11:30:57
电梯0->1,时间花费5
在1层停留时间内,电梯门会开,第1、2个人进入,时间花费10+2+2 = 14
电梯1->2,时间花费5
在2层第一个人下,第三个人上,时间花费:10+2+2=14
电梯2->3,时间花费5
在第三层两个人都下,时间花费:10+2+2=14
总花费:5+14+5+14+5+14 = 57
保证$from_i \neq to_i$,$1\le from_i, to_i \le 20$,$n \le 1000$,$1 \le weight_i \le W \le 10000$。