type a2=array[0..1] of real; // тип пара координат const n=10; // кількість точок const a: array[0..n-1] of a2 = // координати точок ((110, 66), (88,108), (88, 30), (85, 83), (60, 72), (53, 45), (32, 72), (39,108), (11, 58), (25, 8)); // ((0, 0), (4, 4), (8, 8), (2, 2)); var right, start, nh, i, j, k, m: word; p, h: array[0..n-1] of word; line: boolean; dj,di: real; function rotate (a,b,c: a2): real; BEGIN rotate:=(b[0]-a[0])*(c[1]-b[1]) -(b[1]-a[1])*(c[0]-b[0]); END; BEGIN for j:=0 to n-1 do p[j]:=j; j:=0; for i:=1 to n-1 do // 1. Пошук стартової точки if ((a[P[i]][0] < a[P[j]][0]) or ((a[P[i]][0] = a[P[j]][0]) and (a[P[i]][1] < a[P[j]][1]))) then j:=i; start:=P[j]; P[j]:=P[0]; P[0]:=start; write(start); line:=true; // 2. Перевірка розташування точок на одній прямій dj:= abs(a[P[0]][0]-a[P[1]][0]) + abs(a[P[0]][1]-a[P[1]][1]); j := 1; for i:=2 to n-1 do begin line:=line and (rotate(a[P[0]],a[P[1]],a[P[i]])=0); di:= abs(a[P[0]][0]-a[P[i]][0]) + abs(a[P[0]][1]-a[P[i]][1]); if dj