← Back to topics
Topic

trougao

d
darkspirit
Paga na 4 test primeri(vremeto ne e problem)

var odg,n,i,j,k,pom,l:integer;
x,y:array[1..32000]of longint;

procedure vlez;
begin
readln(n);
for i:=1 to n do readln(x[i],y[i]);
end;
function area(u,v,w:integer):double;
begin
area:=0.5*abs(x[u]*(y[v]-y[w])+x[v]*(y[w]-y[u])+x[w]*(y[u]-y[v]));
end;
begin
vlez;
if n<=3 then odg:=n else
begin
for i:=1 to n-2 do
begin
for j:=i+1 to n do
begin
for k:=j+1 to n do
begin
pom:=3;
for l:=1 to n do
begin
if (l<>i) and (l<>k) and (l<>j) and
(abs(area(i,j,l)+area(i,k,l)+area(j,k,l)-area(i,j,k))<0.00000001) then inc(pom);
if pom>odg then odg:=pom;
end;
end;
end;
end;
end;
writeln(odg);
end.




d
dimitar
Ova u deklaracijata ne ti e greska ali bezveza e tolkava niza a ima samo 60 tocki :)


var odg,n,i,j,k,pom,l:longint;
x,y:array[1..60] of real;

procedure vlez;
begin
readln(n);
for i:=1 to n do readln(x[i],y[i]);
end;
function area(u,v,w:integer):double;
begin
area:=0.5*abs(x[u]*(y[v]-y[w])+x[v]*(y[w]-y[u])+x[w]*(y[u]-y[v]));
end;
begin
vlez;
odg:= 0;
for i:=1 to n-2 do
begin
for j:=i+1 to n do
begin
for k:=j+1 to n do
begin
pom:=3;
for l:=1 to n do
begin
if (l<>i) and (l<>k) and (l<>j) and
(abs(area(i,j,l)+area(i,k,l)+area(j,k,l)-area(i,j,k))<0.001) then inc(pom);
if pom>odg then odg:=pom;
end;
end;
end;
end;

writeln(odg);
end.