2014年6月24日 星期二

uva 105 The Skyline Problem

把比較高的覆蓋比較低的。

注意:
用兩個點形成線段,所以在寫程式時,要保持這個觀點去寫。
ex: y[i] 存的高度為 i-1 和 i 形成的線段高度

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int y[12000]={0};
    int l,h,r,maxx;

    int i,temp;

    maxx=0;
    while(scanf("%d %d %d",&l,&h,&r)!=EOF){
        for(i=l+1;i<=r;i++){
            if(h>y[i])
                y[i]=h;

            if(r>maxx)maxx=r;
        }
    }

    i=0;
    while(y[i]==0)++i;
    printf("%d %d",i-1,y[i]);

    for(;i<=maxx;++i){
        if(y[i]!=y[i+1])
            printf(" %d %d",i,y[i+1]);
    }

    printf("\n");


    return 0;
}

沒有留言:

張貼留言