2009-09-06 19:35:15來源不明

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.