娄山中学noip答案...吧 关注:3贴子:16
  • 0回复贴,共1

a783. 5. Houston Skyline

只看楼主收藏回复

uses math;
var
a:array[1..50,1..50] of char;
a1:array[1..50,1..50] of boolean;
b,c,d,h,m,i,j,k,s,y,z:longint;
aa,bb,ss:boolean;
begin
while not eof do begin
fillchar(a,sizeof(a),* *);
fillchar(a1,sizeof(a1),false);
for i:=1 to 50 do begin a[50,i]:=chr(i mod 10+48); a[49,i]:=*-*; end;
readln(s);
h:=0;
m:=1;
for k:=1 to s do begin
readln(b,c,d);
h:=max(h,d);
y:=0;
z:=0;
aa:=true;
bb:=true;
ss:=true;
a[49,b]:=*+*;
a[49,b+c+1]:=*+*;
a[48-d,b]:=*+*;
a[48-d,b+c+1]:=*+*;
for i:=49-d to 48 do if a1[i,b]=false then a[i,b]:=*|*;
for i:=49-d to 48 do if a1[i,b+c+1]=false then a[i,b+c+1]:=*|*;
for i:=b+1 to b+c do if a1[48-d,i]=false then a[48-d,i]:=*-*;
for i:=49-d to 49 do begin
for j:=b+1 to b+c do begin a[i,j]:=* *; a1[i,j]:=true; end;
if ((a[i,b+c+2]=*-*) or (a[i,b+c+2]=*+*)) and (bb) then begin z:=i+1; a[i,b+c+1]:=*+*; bb:=false; end;
if ((a[i,b-1]=*-*) or (a[i,b-1]=*+*)) and (aa) then begin y:=i+1; a[i,b]:=*+*; aa:=false; end;
end;
for j:=z to 49 do begin a[j,b+c+1]:=* *; a1[j,b+c+1]:=true; end;
for j:=y to 49 do begin a[j,b]:=* *; a1[j,b]:=true; end;
end;
for i:=48-h to 50 do begin
for j:=1 to 50 do write(a[i,j]);
writeln;
end;
end;
end.


1楼2014-08-21 15:20回复