Pagini recente » Cod sursa (job #319213) | Cod sursa (job #660267) | Cod sursa (job #1677616) | Cod sursa (job #2978325) | Cod sursa (job #575265)
Cod sursa(job #575265)
type dreptunghi=record
x0,y0,x1,y1:longint;
end;
var a:array[1..3] of dreptunghi;
t:dreptunghi;
i,ar,pe:longint;
s:byte;
function max(a,b:longint):longint;
begin
if a>b then max:=a
else max:=b;
end;
function min(a,b:longint):longint;
begin
if a<b then min:=a
else min:=b;
end;
function arie(a,b:dreptunghi):longint;
var t:dreptunghi;
begin
t.x0:=max(a.x0,b.x0);
t.y0:=min(a.y0,b.y0);
t.x1:=max(a.x1,b.x1);
t.y1:=min(a.y1,b.y1);
if (t.x0>t.x1) or (t.y0>t.y1) then
begin
t.x0:=0;t.y0:=0;t.x1:=0;t.y1:=0;
end;
arie:=abs(t.x1-t.x0)*abs(t.y1-t.y0);
end;
function perimetru(a,b:dreptunghi):longint;
var t:dreptunghi;
begin
t.x0:=max(a.x0,b.x0);
t.y0:=min(a.y0,b.y0);
t.x1:=max(a.x1,b.x1);
t.y1:=min(a.y1,b.y1);
if (t.x0>t.x1) or (t.y0>t.y1) then
begin
t.x0:=0;t.y0:=0;t.x1:=0;t.y1:=0;
end;
perimetru:=2*abs(t.x1-t.x0)+2*abs(t.y1-t.y0);
end;
procedure coord(a,b:dreptunghi; var t:dreptunghi; var s:byte);
begin
t.x0:=max(a.x0,b.x0);
t.y0:=min(a.y0,b.y0);
t.x1:=max(a.x1,b.x1);
t.y1:=min(a.y1,b.y1);
s:=1;
if (t.x0>t.x1) or (t.y0>t.y1) then s:=0;
end;
begin
assign(input,'reuniune.in');
reset(input);
assign(output,'reuniune.out');
rewrite(output);
for i:=1 to 3 do readln(a[i].x0,a[i].y0,a[i].x1,a[i].y1);
ar:=0;
for i:=1 to 3 do
ar:=ar+abs(a[i].y1-a[i].y0)*abs(a[i].x1-a[i].x0);
pe:=0;
for i:=1 to 3 do
pe:=pe+2*abs(a[i].y1-a[i].y0)+2*abs(a[i].x1-a[i].x0);
ar:=ar-arie(a[1],a[2]);
ar:=ar-arie(a[1],a[3]);
ar:=ar-arie(a[2],a[3]);
pe:=pe-perimetru(a[1],a[2])-perimetru(a[1],a[3])-perimetru(a[2],a[3]);
coord(a[1],a[2],t,s);
if s=1 then
begin
ar:=ar+arie(t,a[3]);
pe:=pe+perimetru(t,a[3]);
end;
write(ar,pe);
end.