Cod sursa(job #575286)

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

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

function aria(i:integer):longint;
begin
aria:=abs((a[i].x1-a[i].x2)*(a[i].y1-a[i].y2));
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;

begin
assign(input,'reuniune.in');reset(input);
assign(output,'reuniune.out');rewrite(output);
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.