Cod sursa(job #710300)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 9 martie 2012 13:39:08
Problema Reuniune Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.31 kb
type drept=record
   x,y,x1,y1:int64;
   end;

var i,j:longint;
    v,c:array[1..3]of drept;
    aa,pp,x,y,x1,y1,ppp,aaa,a,p:int64;

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

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


procedure intersectie;
begin
c[i].x:=max(x,v[i].x);
c[i].y:=max(v[i].y,y);
c[i].x1:=min(v[i].x1,x1);
c[i].y1:=min(v[i].y1,y1);
if (c[i].x>c[i].x1)or (c[i].y>c[i].y1) then
begin
c[i].x:=0;
c[i].x1:=0;
c[i].y:=0;
c[i].y1:=0;
end;
end;







begin
assign(input,'reuniune.in');reset(input);
assign(output,'reuniune.out');rewrite(output);
for i:=1 to 3 do begin
read(v[i].x,v[i].y,v[i].x1,v[i].y1);
p:=2*(abs(v[i].x1-v[i].x)+abs(v[i].y1-v[i].y));
a:=abs(v[i].x1-v[i].x)*abs(v[i].y1-v[i].y);
aa:=aa+a;
pp:=pp+p;
end;
for i:=1 to 2 do  begin
for j:=i+1 to 3 do begin
x:=v[j].x;
y:=v[j].y;
x1:=v[j].x1;
y1:=v[j].y1;
intersectie;
aaa:=abs(c[i].x1-c[i].x)*abs(c[i].y1-c[i].y);
ppp:=2*(abs(c[i].x1-c[i].x)+abs(c[i].y1-c[i].y));
aa:=aa-aaa;
pp:=pp-ppp;
end;
end;
j:=1;
x:=c[j].x;
y:=c[j].y;
x1:=c[j].x1;
y1:=c[j].y1;
i:=2;
intersectie;
aaa:=abs(c[i].x1-c[i].x)*abs(c[i].y1-c[i].y);
ppp:=2*(abs(c[i].x1-c[i].x)+abs(c[i].y1-c[i].y));
aa:=aa+aaa;
pp:=pp+ppp;
write(aa,' ',pp);
close(output);
end.