Cod sursa(job #329662)

Utilizator andrey932Andrei andrey932 Data 7 iulie 2009 02:15:23
Problema Reuniune Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.18 kb
uses math;
var t:text;
    x0,y0,x1,y1:array[1..3] of extended;
    ix1,ix2,iy1,iy2,px,py:extended;
    i,j:longint;
    p,a:int64;

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

//p:=trunc( maxvalue(x1)-minvalue(x0) + maxvalue(y1)-minvalue(y0) )*2;

a:=0; p:=0; px:=0; py:=0;
for i:=1 to 3 do
  begin
    a:=a+trunc((x1[i]-x0[i])*(y1[i]-y0[i]));
  //  p:=p+trunc(2*(x1[i]-x0[i]+y1[i]-y0[i]));
    px:=px+(x1[i]-x0[i]);
    py:=py+(y1[i]-y0[i]);
  end;

for i:=1 to 2 do
  for j:=i+1 to 3 do
    begin

      ix1:=max(x0[j],x0[i]); ix2:=min(x1[j],x1[i]);
      iy1:=max(y0[j],y0[i]); iy2:=min(y1[j],y1[i]);
      if ((ix1<=ix2) and (iy1<=iy2)) then
        begin
          a:=a-trunc((ix2-ix1)*(iy2-iy1));
          px:=px-(ix2-ix1);
          py:=py-(iy2-iy1);
        end;


    end;
ix1:=maxvalue(x0); ix2:=minvalue(x1);
iy1:=maxvalue(y0); iy2:=minvalue(y1);
if ((ix1<ix2) and (iy1<iy2)) then
  begin
    a:=a+trunc((ix2-ix1)*(iy2-iy1));
    px:=px+(ix2-ix1);
    py:=py+(iy2-iy1);
  end;
p:=0;
p:=trunc(2*(px+py));

close(t);
assign(t,'reuniune.out'); rewrite(t);
writeln(t,a,' ',p);
close(t);
end.