package work; import java.util.*; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import static work.Work.a; import static work.Work.rotate; import static work.Work.start; class Point // Точка координатної площини { int x,y; Point(int x, int y) {this.x = x; this.y = y;} } class I implements Comparator, Comparable // Номер точки з упорядкуванням { int i; // за кутовим аргументом від променя з початком у точці з номером I() { } // start.i, спрямованого у додотному напрямі осі абсцис Ох I (int i) {this.i = i;} @Override public int compare (I k, I j) { int r=rotate(a[start],a[j.i],a[k.i]); if (r!=0) return r; else {int dk=Math.abs(a[start].x-a[k.i].x)+Math.abs(a[start].y-a[k.i].y); int dj=Math.abs(a[start].x-a[j.i].x)+Math.abs(a[start].y-a[j.i].y); return dj-dk; } } @Override public int compareTo (I k) { int r=rotate(a[start],a[k.i],a[this.i]); if (r!=0) return r; else {int dk=Math.abs(a[start].x-a[k.i].x) +Math.abs(a[start].y-a[k.i].y); int dj=Math.abs(a[start].x-a[this.i].x)+Math.abs(a[start].y-a[this.i].y); return dj-dk; } } } public class Work { static int start; // Номер початкова вершина лініної оболонки static int n_ = 10; // Верхня межа кількості точок static Point[] a = new Point[n_];// Масив координат точок static 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); } public static void main(String args[]) { int j, k=0, n, n1; try { FileReader in = new FileReader("graham.in"); FileWriter out = new FileWriter("graham.out"); BufferedReader bin = new BufferedReader(in); Scanner sc = new Scanner(bin); n = sc.nextInt(); n1=n-1; for (j=0; j