Pagini recente » Cod sursa (job #1716550) | Cod sursa (job #2561335) | Cod sursa (job #1995859) | Cod sursa (job #1605528) | Cod sursa (job #115405)
Cod sursa(job #115405)
program raze;
var f,g:text;
n,i,nr,k:longint;
aux,y1aux,y2aux:real;
x,y1,y2:array[1..200000] of real;
frx,fry1,fry2:array[1..200000] of real;
gasit:boolean;
begin
assign(f,'rays.in'); assign(g,'rays.out');
reset(f); rewrite(g);
read(f,n);
for i:=1 to n do
read(f,x[i],y1[i],y2[i]);
frx[1]:=x[1]; fry1[1]:=y1[1]; fry2[1]:=y2[1];
if fry1[1]>fry2[1] then begin aux:=fry1[1]; fry1[1]:=fry2[1]; fry2[1]:=aux; end;
nr:=1;
for i:=2 to n do
begin
gasit:=false;
for k:=1 to nr do
if frx[k]*x[i]>0 then
begin
gasit:=false;
y1aux:=frx[k]*y1[i]/x[i];
y2aux:=frx[k]*y2[i]/x[i];
if y1aux>y2aux then begin aux:=y1aux; y1aux:=y2aux; y2aux:=aux; end;
if ((y1aux<=fry1[k]) and (fry2[k]<=y2aux)) then gasit:=true
else
begin
if ((fry1[k]<=y1aux) and (y1aux<=fry2[k])) then
begin gasit:=true; fry1[k]:=y1aux; end
else
if ((fry1[k]>=y1aux) and (y1aux>=fry2[k])) then
begin gasit:=true; fry2[k]:=y1aux; end;
if ((fry1[k]<=y2aux) and (y2aux<=fry2[k])) then
begin gasit:=true; fry2[k]:=y2aux; end
else
if ((fry1[k]>=y2aux) and (y2aux>=fry2[k])) then
begin gasit:=true; fry1[k]:=y2aux; end;
end;
if gasit then break;
end;
if not gasit then
begin
nr:=nr+1;
frx[nr]:=x[i]; fry1[nr]:=y1[i]; fry2[nr]:=y2[i];
if fry1[nr]>fry2[nr] then begin aux:=fry1[nr]; fry1[nr]:=fry2[nr]; fry2[nr]:=aux; end;
end;
end;
writeln(g,nr);
close(f); close(g);
end.