type zaz = record x,y : integer; end; var i,j,k,n : integer; vec1x,vec1y,vec2x,vec2y : integer; pom:zaz; kde, kam : integer; pridane : boolean; bod : array[0..303] of zaz; pr : array[1..100000,1..11] of integer; begin repeat for i:=0 to 303 do begin bod[i].x:=0; bod[i].y:=0; end; for i:=1 to 100000 do for j:=1 to 11 do pr[i,j]:=0; i:=0; repeat if eoln then readln else begin inc(i); read(bod[i].x, bod[i].y); end; until (bod[i].x=0)and(bod[i].y=0); n:=i-1; readln; if (bod[1].x=0) and(bod[1].y=0) then exit; for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do begin if bod[j].x < bod[k].x then k:=j else if bod[j].x = bod[k].x then begin if bod[j].y < bod[k].y then k:=j; end; end; if k <> i then begin pom:=bod[i]; bod[i]:=bod[k]; bod[k]:=pom; end; end; kde:=0; for i:=1 to n-2 do begin for j:=i+1 to n-1 do begin vec1x:=bod[j].x-bod[i].x; vec1y:=bod[j].y-bod[i].y; pridane:=false; for k:=j+1 to n do begin vec2x:=bod[k].x-bod[i].x; vec2y:=bod[k].y-bod[i].y; if (vec2y*vec1x-vec2x*vec1y)=0 then begin if pridane then begin inc(kam); pr[kde][kam]:=k; end else begin inc(kde); kam:=1; pr[kde,kam]:=i; inc(kam); pr[kde][kam]:=j; inc(kam); pr[kde][kam]:=k; pridane:=true; end; end; end; end; end; {zmazanie nas. pr} for i:=1 to kde-1 do begin for j:=i+1 to kde do begin if (pr[i,1]<>0)and(pr[j,1]<>0) then begin Vec1x:=bod[pr[i,2]].x-bod[pr[i,1]].x; Vec1y:=bod[pr[i,2]].y-bod[pr[i,1]].y; Vec2x:=bod[pr[j,2]].x-bod[pr[j,1]].x; Vec2y:=bod[pr[j,2]].y-bod[pr[j,1]].y; if Vec1x*Vec2y-Vec1y*Vec2x =0 then pr[j,1]:=0; end; end; end; {vypi} if kde=0 then begin writeln('Smernice byla dodrzena.'); end else begin writeln('Tito policiste porusuji smernici:'); for i:=1 to kde do begin j:=1; if pr[i,1]<>0 then begin while pr[i,j]<>0 do begin write('(',bod[pr[i,j]].x,',',bod[pr[i,j]].y,')'); inc(j); end; writeln; end; end; end; writeln; until 5=3; end.