直接上代码,代码中有注释
#include <bits/stdc++.h>
using namespace std;
int l, h, r;
int a[100009]; //存储顶部线
int main () {
while (cin >> l >> h >> r) //每次输入l,h,r
for (int i = l; i < r; i++) //l~r遍历
if (a[i] < h) a[i] = h; //如果新的楼的l小于上一栋楼的r,比较楼的h,h更高则替换
for (int i = 1; i <= 10000; i++) //i是从第一栋楼的l到最后一栋楼的r,最后一栋楼的r数据范围在10000以内
if (a[i] != a[i - 1]) //只有到转折点时才不等,即执行 ↓
cout << i << " " << a[i] << " "; //输出l的位置i,接下来输出该转折点a[i]
return 0;
}