问题 E: 越障行进

问题 E: 越障行进★★★

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

题目描述

在一个平面坐标系内,有n个矩形障碍物沿x轴从左向右依次排列(不存在障碍物竖直边重合情况)。某机器人从原点出发,沿障碍物外围向右行进。现根据障碍物的位置信息,寻找机器人的行进路线。


行进路线是由一系列“转折点”组成的序列,每个“转折点”用x、y 坐标值来表示。每个障碍物的位置信息由其左上顶点的坐标及宽度值来表示,如第 15 题图 a 所示,3 个障碍物的位置信息为[[1,3,4],[3,7,5],[7,5,3]],最后得到的行进路线为[[1,3],[3,7],[8,5],[10,0]]。为了简化表示,行进路线中不需要存储连续相同高度的“转折点”,如[1,3],[3,3]两个点只需保留[1,3]。

供参考的做题思路如下:

1.  计算出障碍物左上、右上顶点的坐标,并用“L”“R”进行标记。根据每个顶点的x坐标值升序排序;

2.  从左往右依次扫描障碍物的顶点。如果遇到左上顶点,将其高度值存储到序列中,若存储高度值的序列最大值发生变化,则产生一个转折点”;如果遇到右上顶点,从序列中删除其高度值(若有重复值,只删除一次),若删除后存储高度值的序列最大值发生变化,也产生一个转折点

计算障碍物左上、右上顶点的坐标,进行标记;再根据x坐标值升序排序并返回结果,如第 15题图c所示。


输入

第一行输入矩形障碍物的个数n(1<=n<=10^5)

接下来n行,每行三个数x, y, w,分别表示矩形左上顶点横纵坐标和宽度(1<=x, y, w<=10^5)。

输出

机器人的前进路线,输出格式参照样例。

样例输入
Copy
3
1 3 4
3 7 5
7 5 3
样例输出
Copy
(1,3) -> (3,7) -> (8,5) -> (10,0)

提示

不一定要按照题目提供的思路解题
[提交][状态]