Cod sursa(job #329655)

Utilizator andrey932Andrei andrey932 Data 7 iulie 2009 01:23:07
Problema Reuniune Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.23 kb
uses math;
var t:text;
    x0,y0,x1,y1:array[1..3] of longint;
    i,j,ix1,ix2,iy1,iy2: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:=( maxvalue(x1)-minvalue(x0) + maxvalue(y1)-minvalue(y0) )*2;
a:=0;
for i:=1 to 3 do
  a:=a+(x1[i]-x0[i])*(y1[i]-y0[i]);

for i:=1 to 2 do
  for j:=i+1 to 3 do
    begin
{      if ((x0[j]<x1[i]) and (y0[j]<y1[i]) and (x0[j]>=x0[i]) and (y0[j]>=y0[i]) ) then
        a:=a - (minvalue(x1[j]-x0[j],x1[i]-x0[j])*minvalue(y1[j]-y0[j],y1[i]-y0[j])

      else if ( (x0[j]<=x0[i]) and (y0[j]<y1[i]) and (y0[j]>y0[i]) and () )



      else if ( () and () and () and () )



      else if ( () and () and () and () )



      else if ( () and () and () and () )
                                             }

      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 a:=a-(ix2-ix1)*(iy2-iy1);


    end;
ix1:=maxvalue(x0); ix2:=minvalue(x1);
iy1:=maxvalue(y0); iy2:=minvalue(y1);
if ((ix1<ix2) and (iy1<iy2)) then a:=a+(ix2-ix1)*(iy2-iy1);

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