#P1643. Roller-coaster
Roller-coaster
问题描述
一列火车从起点出发,初始高度为 ,以速度 匀速向右行驶(即每秒前进 单位水平距离)。火车的出发时间为给定的常数 (即在时间 时从起点出发)。从时间 开始就可以建造轨道。
共有 段轨道需要建造,编号 到 。每段轨道 由三个整数参数描述:
- 长度 :正整数,表示该段轨道的水平距离。
- 高度变化 :整数,表示火车行驶完该段轨道后的高度变化量。若 则为上坡(高度增加 ),若 则为下坡(高度减少 )。
- 建造时间 :正整数,表示建造该段轨道所需的时间。
你需要决定这些轨道的 行驶顺序(即火车经过它们的先后次序)以及 建造顺序(即建造它们的先后次序)。
约束条件
- 建造顺序约束:同一时间只能建造一段轨道,且建造过程中不能中断。对于行驶顺序中的第 段轨道,它必须在火车到达该段起点之前建造完成,即其建造完成时间 火车到达该段起点的时间。
- 高度非负:火车在行驶过程中的任意时刻,高度不能低于 。
- 终点高度为零:在行驶完所有 段轨道之后,火车的高度必须恰好为 。
目标
在所有满足上述条件的行驶顺序和建造方案中,最小化火车行驶过程中的最大高度。如果不存在任何满足条件的方案,输出 。
输入格式
第一行两个整数 。
接下来 行,每行三个整数 。
输出格式
一个整数,表示最小可能的最大高度;若无解则输出 。
样例
样例输入 1
2 5
2 1 3
1 -1 2
样例输出 1
1
解释:可在出发前完成两段轨道的建造(建造总时间 )。行驶时先上坡后下坡,最大高度为 。
样例输入 2
7 20
3 2 3
4 3 4
2 -1 2
3 -2 3
2 1 2
1 -2 1
2 -1 2
样例输出 2
3
解释:按行驶顺序 (即轨道2、轨道4、轨道1、轨道3、轨道5、轨道7、轨道6)行驶,整个过程高度不超过 ,且该值是最优的。
样例输入 3
7 20
3 2 3
4 3 4
2 -1 2
3 -2 3
2 1 2
1 2 1
2 -1 2
样例输出 3
-1
解释:无法使终点高度为零,因此无解。
数据范围
Related
In following contests: