#include #include using namespace std; int start, p[10]; struct point {int x,y;} a[10]; int rotate(point a, point b, point c) { return (b.x-a.x)*(c.y-b.y)-(b.y-a.y)*(c.x-b.x); } int f (const int *k, const int *j) { int r=rotate(a[start],a[*j],a[*k]); if (r!=0) return r; else { int dk=abs(a[start].x-a[*k].x)+abs(a[start].y-a[*k].y); int dj=abs(a[start].x-a[*j].x)+abs(a[start].y-a[*j].y); return dj-dk; } } int main() { int j, n, n1; ifstream fi; ofstream fo; fi.open("graham.in"); fo.open("graham.out"); fi>>n; n1=n-1; for (j=0; j>a[j].x>>a[j].y; p[j]=j; } // 1. Пошук стартової точки і розташування її на початку масиву for (j=0; j s ={p[n1],p[0]}; // Cтворення стеку s // 3. Перевірка розташування точок на одній прямій bool line=true; for (j=2; j