題目連結: 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;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay