UVA105

题目大意

有一座城市,这座城市的建筑物都是矩形的,每一栋建筑高为 \(h_i\),建筑的左右大小为 \(l_i,r_i\),现在要你画出这座城市的大致轮廓。

思路

仔细读题,不难发现,建筑最多只有 \(5000\),并且坐标都小于 \(10000\),所以,考虑使用暴力的思想,每一次记录一下坐标的最大高度,并且记录城市最边缘的那几个坐标,并且输出即可(但注意,记录时,\(a_i=a_{i-1}\) 时,不应输出 \(a_i\))。

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e5+10;
int l,h,r,a[maxn];
int maxx=INT_MIN,minn=INT_MAX;
signed main(){
	while(scanf("%d%d%d",&l,&h,&r)!=EOF){
		maxx=max(maxx,r);
		minn=min(minn,l);
		for(int i=l;i<r;++i){
			a[i]=max(a[i],h);
		}
	}
	for(int i=minn;i<maxx;++i){
		if(a[i]!=a[i-1])printf("%d %d ",i,a[i]);
	}
	printf("%d %d\n",maxx,0);
	return 0;
}

posted @ 2024-01-24 14:23  Lrj0709  阅读(31)  评论(0)    收藏  举报