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;
}

浙公网安备 33010602011771号