(数据结构) 综教楼后的那个坑:
描述:
在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。
从横截面图来看,坑底成阶梯状,由从左至右的 1…N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:
每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。
请你计算每个平面被水覆盖的时间。
输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。
输出每个平面被水覆盖的时间。
测试输入 | 期待输出 |
---|---|
3↵ 4 2↵ 2 7↵ 6 4↵ | 4↵ 50↵ 26↵ |
3↵ 4 2↵ 6 4↵ 2 7↵ | 4↵ 18↵ 50↵ |
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct hole
{
long long number,width,height;
struct hole *pre,*next;
}thehole;
long long tot[100005];
int main()
{
thehole *left,*right,*prehole,*cur,*deep;
long long n,a,b;
left = (thehole *)malloc(sizeof(thehole));
left-&g