題目連結: https://zerojudge.tw/ShowProblem?problemid=d424
# 解題思路
每次都會給一個區間的高度,所以,只需要記錄每一個座標點的最高值就好啦
輸出的時候,如果輸出的那點高度哏旗面的那高度不一樣,就要再輸出一個新點
# 程式碼
#include <iostream> | |
using namespace std; | |
int main(){ | |
int h, l, r, build[10001]={0}, maxr = 0; | |
while(cin>>l>>h>>r) | |
{ | |
maxr = max(maxr, r); | |
for(int index = l; index < r; ++index) | |
build[index] = max(h, build[index]); | |
} | |
if(build[0]) | |
cout<<0<<" "<<build[0]<<" "; | |
for(int i = 1; i < maxr + 2; ++i) | |
if(build[i - 1] != build[i]) | |
cout<<i<<" "<< build[i]<<" "; | |
cout<<endl; | |
return 0; | |
} |