VTRI - Triangles
Tác giả: RR
Ngôn ngữ: Pascal
{$R+,Q+}
PROGRAM VTRI;
CONST
FINP='';
FOUT='';
esp=0.0001;
VAR
x,y,s:integer;
kq:longint;
procedure readInput;
var
f:text;
begin
assign(f,FINP); reset(f);
readln(f,x,y,s);
close(f);
end;
procedure writeOutput;
var
f:text;
begin
assign(f,FOUT); rewrite(f);
writeln(f,kq);
close(f);
end;
function kc(x1,y1,x2,y2:shortint):real;
begin
kc:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
function dt(x1,y1,x2,y2,x3,y3:shortint):real;
var
a,b,c,p:real;
begin
a:=kc(x1,y1,x2,y2);
b:=kc(x2,y2,x3,y3);
c:=kc(x3,y3,x1,y1);
p:=(a+b+c)/2;
dt:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
function max(a,b:shortint):shortint;
begin
if a>b then max:=a else max:=b;
end;
procedure solve;
var
x1,y1,x2,y2,ym,xm:shortint;
begin
kq:=0;
for x1:=-x to x do
for y1:=0 to y do
if (x1>0) or (y1>0) then
for x2:=x1 to x1+x do
for y2:=0 to y do
if (x2>x1) or (y2>y1) then
if (x2-x1<=x) and (x2<=x) then
if (x2>0) or (y2>0) then
if abs(dt(x1,y1,x2,y2,0,0)-s)<esp then
begin
ym:=max(y1,y2);
xm:=max(abs(x2-x1),abs(x2));
xm:=max(xm,abs(x1));
kq:=kq+(y-ym+1)*(x-xm+1)*2;
end;
kq:=kq div 2;
end;
procedure solve1;
var
x1,y1,x2,y2,x3,y3:shortint;
begin
for x1:=0 to x do
for y1:=0 to y do
for x2:=0 to x do
for y2:=0 to y do
for x3:=0 to x do
for y3:=0 to y do
if abs(dt(x1,y1,x2,y2,x3,y3)-s)<esp then inc(kq);
kq:=kq div 6;
end;
BEGIN
readInput;
solve;
writeOutput;
END.