Cod sursa(job #575323)

Utilizator dica69Alexandru Lincan dica69 Data 8 aprilie 2011 10:08:22
Problema Reuniune Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.22 kb
type dreptunghi=record
                x0,y0,x1,y1:longint;
                end;

var a:array[1..3] of dreptunghi;
    t1,t2,t3,t4:dreptunghi;
    i,ar,pe:longint;


function max(a,b:longint):longint;
begin
if a>b then max:=a
       else max:=b;
end;

function min(a,b:longint):longint;
begin
if a<b then min:=a
       else min:=b;
end;



function arie(t:dreptunghi):longint;
begin
arie:=abs(t.x1-t.x0)*abs(t.y1-t.y0);
end;


function per(t:dreptunghi):longint;
begin
per:=2*abs(t.x1-t.x0)+2*abs(t.y1-t.y0);
end;

procedure coord(a,b:dreptunghi; var t:dreptunghi);
begin
t.x0:=max(a.x0,b.x0);
t.x1:=min(a.x1,b.x1);
t.y0:=max(a.y0,b.y0);
t.y1:=min(a.y1,b.y1);
if (t.x0>t.x1) or (t.y0>t.y1) then
  begin
  t.x0:=0;
  t.x1:=0;
  t.y0:=0;
  t.y1:=0;
  end;

end;


begin
assign(input,'reuniune.in');
reset(input);
assign(output,'reuniune.out');
rewrite(output);
for i:=1 to 3 do readln(a[i].x0,a[i].y0,a[i].x1,a[i].y1);

ar:=0;
for i:=1 to 3 do
 begin
ar:=ar+arie(a[i]);
pe:=pe+per(a[i]);
end;

coord(a[1],a[2],t1);
coord(a[1],a[3],t2);
coord(a[3],a[2],t3);
coord(t1,a[3],t4);
ar:=ar-arie(t1)-arie(t2)-arie(t3)+arie(t4);
pe:=pe-per(t1)-per(t2)-per(t3)+per(t4);
write(ar,' ',pe);
end.