Cod sursa(job #480024)

Utilizator danalex97Dan H Alexandru danalex97 Data 26 august 2010 08:38:51
Problema Reuniune Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 3.95 kb
program reuniune;
var f,g:text;
    x1,x2,y1,y2,a,p:array[1..7] of longint;
    k1,k2,k3:0..2;

begin
assign(f,'reuniune.in');reset(f);
assign(g,'reuniune.out');rewrite(g);
readln(f,x1[1],y1[1],x2[1],y2[1]);
readln(f,x1[2],y1[2],x2[2],y2[2]);
readln(f,x1[3],y1[3],x2[3],y2[3]);
a[1]:=(x1[1]-x2[1])*(y1[1]-y2[1]);
a[2]:=(x1[2]-x2[2])*(y1[2]-y2[2]);
a[3]:=(x1[3]-x2[3])*(y1[3]-y2[3]);
if a[1]<0 then a[1]:=a[1]*(-1);
if a[2]<0 then a[2]:=a[2]*(-1);
if a[3]<0 then a[3]:=a[3]*(-1);
p[1]:=abs(x1[1]-x2[1])+abs(x1[1]-y2[1])+abs(y1[1]-y2[1])+abs(y1[1]-x2[1]);
p[2]:=abs(x1[2]-x2[2])+abs(x1[2]-y2[2])+abs(y1[2]-y2[2])+abs(y1[2]-x2[2]);
p[3]:=abs(x1[3]-x2[3])+abs(x1[3]-y2[3])+abs(y1[3]-y2[3])+abs(y1[3]-x2[3]);
a[4]:=0;a[5]:=0;a[6]:=0;a[7]:=0;
p[4]:=0;p[5]:=0;p[6]:=0;p[7]:=0;
k1:=0;k2:=0;k3:=0;
if (x2[2]<x2[1]) and (x2[2]>x1[1]) and (y2[2]<y2[1]) and (y2[2]>y1[1]) then
  begin
    k1:=1;
    x2[4]:=x2[2];y2[4]:=y2[2];
    if (x1[2]<x1[1])and(y1[2]>x1[1]) then begin  x1[4]:=x1[1];y1[4]:=y1[2]; end
                                     else begin  x1[4]:=x2[1];y1[4]:=y2[1]; end;
  end
       else
if (x2[1]<x2[2]) and (x2[1]>x1[2]) and (y2[1]<y2[2]) and (y2[1]>y1[2]) then
  begin
    k1:=2;
    x1[4]:=x1[2];y1[4]:=y1[2];
    if (x1[1]<x1[2])and(y1[1]>x1[2]) then begin  x2[4]:=x2[1];y2[4]:=y2[2]; end
                                     else begin  x2[4]:=x1[1];y2[4]:=y1[1]; end;

  end;
{}
if (x2[2]<x2[3]) and (x2[2]>x1[3]) and (y2[2]<y2[3]) and (y2[2]>y1[3]) then
  begin
    k2:=1;
    x2[5]:=x2[2];y2[5]:=y2[2];
    if (x1[2]<x1[3])and(y1[2]>x1[3]) then begin  x1[5]:=x1[3];y1[5]:=y1[2]; end
                                     else begin  x1[5]:=x2[3];y1[5]:=y2[3]; end;
  end
       else
if (x2[3]<x2[2]) and (x2[3]>x1[2]) and (y2[3]<y2[2]) and (y2[3]>y1[2]) then
  begin
    k2:=2;
    x1[5]:=x1[2];y1[4]:=y1[2];
    if (x1[3]<x1[2])and(y1[3]>x1[2]) then begin  x2[5]:=x2[3];y2[5]:=y2[2]; end
                                     else begin  x2[5]:=x1[3];y2[5]:=y1[3]; end;

  end;
{}
if (x2[3]<x2[1]) and (x2[3]>x1[1]) and (y2[3]<y2[1]) and (y2[3]>y1[1]) then
  begin
    k3:=1;
    x2[6]:=x2[3];y2[4]:=y2[3];
    if (x1[3]<x1[1])and(y1[3]>x1[1]) then begin  x1[6]:=x1[1];y1[4]:=y1[3]; end
                                     else begin  x1[6]:=x2[1];y1[4]:=y2[1]; end;
  end
       else
if (x2[1]<x2[3]) and (x2[1]>x1[3]) and (y2[1]<y2[3]) and (y2[1]>y1[3]) then
  begin
    k3:=2;
    x1[6]:=x1[3];y1[4]:=y1[3];
    if (x1[1]<x1[3])and(y1[1]>x1[3]) then begin  x2[6]:=x2[1];y2[4]:=y2[3]; end
                                     else begin  x2[6]:=x1[1];y2[4]:=y1[1]; end;

  end;
{}
if (k1>0) and (k2>0) and (k3>0) then
  begin
if (x2[6]<x2[1]) and (x2[6]>x1[1]) and (y2[6]<y2[1]) and (y2[6]>y1[1]) then
  begin
    k1:=1;
    x2[7]:=x2[6];y2[4]:=y2[6];
    if (x1[6]<x1[1])and(y1[6]>x1[1]) then begin  x1[7]:=x1[1];y1[4]:=y1[6]; end
                                     else begin  x1[7]:=x2[1];y1[4]:=y2[1]; end;
  end
       else
if (x2[1]<x2[6]) and (x2[1]>x1[6]) and (y2[1]<y2[6]) and (y2[1]>y1[6]) then
  begin
    k1:=2;
    x1[7]:=x1[6];y1[4]:=y1[6];
    if (x1[1]<x1[2])and(y1[1]>x1[2]) then begin  x2[7]:=x2[1];y2[4]:=y2[6]; end
                                     else begin  x2[7]:=x1[1];y2[4]:=y1[1]; end;
  end;
  end;
a[4]:=(x1[4]-x2[4])*(y1[4]-y2[4]);
a[5]:=(x1[5]-x2[5])*(y1[5]-y2[5]);
a[6]:=(x1[6]-x2[6])*(y1[6]-y2[6]);
a[7]:=(x1[7]-x2[7])*(y1[7]-y2[7]);
if a[4]<0 then a[4]:=a[4]*(-1);
if a[5]<0 then a[5]:=a[5]*(-1);
if a[6]<0 then a[6]:=a[6]*(-1);
if a[7]<0 then a[7]:=a[7]*(-1);
p[4]:=abs(x1[4]-x2[4])+abs(x1[4]-y2[4])+abs(y1[4]-y2[4])+abs(y1[4]-x2[4]);
p[5]:=abs(x1[5]-x2[5])+abs(x1[5]-y2[5])+abs(y1[5]-y2[5])+abs(y1[5]-x2[5]);
p[6]:=abs(x1[6]-x2[6])+abs(x1[6]-y2[6])+abs(y1[6]-y2[6])+abs(y1[6]-x2[6]);
p[7]:=abs(x1[7]-x2[7])+abs(x1[7]-y2[7])+abs(y1[7]-y2[7])+abs(y1[7]-x2[7]);
write(g,a[1]+a[2]+a[3]-a[4]-a[5]-a[6]-a[7],' ');
write(g,p[1]+p[2]+p[3]-p[4]-p[5]-p[6]-p[7]);
close(f);
close(g);
end.