空间跳跃:二维不重叠水平挡板间最少时间路径计算
类型:程序题

题面描述

小杨在二维空间中有n个水平挡板,并且挡板之间彼此不重叠,其中第i个挡板处于水平高度h_i,左右端点分别位于l_i与r_i。

小杨可以在挡板上左右移动,当小杨移动到右端点时,如果再向右移动会竖直掉落,从而落到下方第一个挡板上,移动到左端点时同理。小杨在挡板上每移动1个单位长度会耗费1个单位时间,掉落时每掉落1个单位高度也会耗费1个单位时间。

小杨想知道,从第s个挡板上的左端点出发到第t个挡板需要耗费的最少时间是多少?

注意:可能无法从第s个挡板到达到第t个挡板。

输入格式

第一行包含一个正整数n,代表挡板数量。

第二行包含两个正整数s,t,含义如题面所示。

之后n行,每行包含三个正整数l_i,r_i,h_i,代表第i个挡板的左右端点位置与高度。

输出格式

输出一个整数代表需要耗费的最少时间,如果无法到达则输出 -1。

输入样例

3
3 1
5 6 3
3 5 6
1 4 100000

输出样例

100001

样例说明

耗费时间最少的移动方案为,从第3个挡板左端点移动到右端点,耗费3个单位时间,然后向右移动掉落到第2个挡板上,耗费100000-6=99994个单位时间,之后再向右移动1个单位长度,耗费1个单位时间,最后向右移动掉落到第1个挡板上,耗费3个单位时间。共耗费3+99994+1+3=100001个单位时间。

数据范围

子任务编号 数据点占比 n 特殊条件
1 20% ≤1000 l_i=1
2 40% ≤1000 l_i=i, r_i=i+1
3 40% ≤1000

对于全部数据,保证有1≤n≤1000,1≤l_i≤r_i≤10^5,1≤h_i≤10^5。

代码编辑器
测试用例输入
{{resultStatus.text}}