UVA 105 - The Skyline Problem

来源:互联网 发布:刘慧芳 知乎 编辑:程序博客网 时间:2024/05/17 22:52


只需要记录每一个关键点就行了,用数组存下来,如果两个相邻点的高度不同,则是一个关键点

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
using namespace std;
int a[10010];
int main()
{
    int left,right,height,minleft=10000,maxright=0;
    while(cin>>left>>height>>right)
    {
        for(int i=left; i!=right; i++)
            if(a[i]<height)
                a[i]=height;
        if(left<minleft)
            minleft=left;
        if(right>maxright)
            maxright=right;
    }
    for(int i=minleft; i!=maxright; i++)
        if(a[i]!=a[i-1])
            cout<<i<<\" \"<<a[i]<<\" \
原创粉丝点击