ACM 105 Q105: The Skyline Problem
/**********************************************************/
#include<stdio.h>
#include<stdlib.h>
main()
{
int L,H,R,M=0,a;
int LL[10001]={0};
while(scanf("%d %d %d",&L,&H,&R)==3)
{
if(R>M) M=R;
for(a=L;a<R;a++)
if(H>LL[a])
LL[a]=H;
}
int last=0;
for(a=0;a<M;a++)
if(LL[a]!=last)
{
printf("%d %d ",a,LL[a]);
last=LL[a];
}
printf("%d %d\n",M,0);
return 0;
}
/*******************************************************/
下面這是PASCAL
var l,r,h,i,j,t,maxh: longint;
a : array[1..10000] of longint;
function max(a,b:longint):longint;
begin
if a>=b then max:=a
else max:=b;
end;
begin
maxh:=0;
while not eof do begin
readln(l,r,h);
maxh:=max(h,maxh);
for i:=l to h-1 do
a[i]:=max(a[i],r);
end;
t:=0;
for j:=0 to maxh-1 do
if a[j]<>t then begin
t:=a[j];
write(' ',j,' ',a[j]);
end;
write(' ',maxh,' ',0);
end.