Cod sursa(job #575292)

Utilizator tibi9876Marin Tiberiu tibi9876 Data 8 aprilie 2011 09:28:49
Problema Reuniune Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.18 kb
type dreptunghi=record x1,x2,y1,y2:longint; end;
var a:array[1..7] of dreptunghi;
    i:integer;
    per,ar:longint;

function max(x,y:longint):longint;
begin
if x>y then max:=x else max:=y;
end;

function min(x,y:longint):longint;
begin
if x<y then min:=x else min:=y;
end;

procedure inter(i,j,k:integer);
begin
a[k].x1:=max(a[i].x1,a[j].x1);
a[k].x2:=min(a[i].x2,a[j].x2);
a[k].y1:=max(a[i].y1,a[j].y1);
a[k].y2:=min(a[i].y2,a[j].y2);
if (a[k].x1>=a[k].x2) or (a[k].y1>=a[k].y2) then
begin
a[k].x1:=0;
a[k].x2:=0;
a[k].y1:=0;
a[k].y2:=0;
end;
end;

function perim(i:integer):longint;
begin
perim:=2*abs(a[i].x1-a[i].x2)+2*abs(a[i].y1-a[i].y2);
end;

function aria(i:integer):longint;
begin
aria:=abs((a[i].x1-a[i].x2)*(a[i].y1-a[i].y2));
end;

begin
assign(input,'reuniune.in');reset(input);
assign(output,'reuniune.out');rewrite(output);
per:=0;ar:=0;
for i:=1 to 3 do
begin
readln(a[i].x1,a[i].y1,a[i].x2,a[i].y2);
ar:=ar+aria(i);
per:=per+perim(i);
end;
inter(1,2,4);
inter(2,3,5);
inter(1,3,6);
for i:=4 to 6 do
begin
ar:=ar-aria(i);
per:=per-perim(i);
end;
inter(3,4,7);
ar:=ar+aria(7);
per:=per+perim(7);
writeln(ar,' ',per);
end.