func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     double x, y;     double angle;   } a[1200000], chs[1200000];   bool cmp1(point a, point b) {     if (a.y == b.y)       return a.x < b.x;     else       return a.y < b.y;   }   bool cmp2(point a, point b) {     if (a.angle == b.angle)       return a.x < b.x;     else       return a.angle < b.angle;   }   double get_angle(point a0, point a1) {     return atan2((a1.y - a0.y), (a1.x - a0.x));   }   double get_dis(point a1, point a2) {     return sqrt((a1.x - a2.x) * (a1.x - a2.x) + (a1.y - a2.y) * (a1.y - a2.y));   }   bool line(point a, point b, point c) {     double kk;     kk = a.x * b.y + c.x * a.y + b.x * c.y - c.x * b.y - a.x * c.y - b.x * a.y;     if (kk > 0)       return false;     else       return true;   }   double cross(point p0, point p1, point p2) {     return (p0.x - p2.x) * (p1.y - p2.y) - (p1.x - p2.x) * (p0.y - p2.y);   }   int main() {     int n, r, i;     while (scanf( %d , &n) != EOF) {       for (i = 0; i < 4 * n; i = i + 4) {         scanf( %lf%lf , &a[i].x, &a[i].y);         a[i].x = a[i].x - 1;         a[i].y = a[i].y;         a[i + 1].x = a[i].x + 1;         a[i + 1].y = a[i].y;         a[i + 2].x = a[i].x;         a[i + 2].y = a[i].y - 1;         a[i + 3].x = a[i].x;         a[i + 3].y = a[i].y + 1;       }       sort(a, a + 4 * n, cmp1);       for (i = 1; i < 4 * n; i++) a[i].angle = get_angle(a[0], a[i]);       sort(a + 1, a + 4 * n, cmp2);       int top = 2;       chs[0] = a[0];       chs[1] = a[1];       chs[2] = a[2];       for (i = 3; i < 4 * n; i++) {         while (top >= 1 && line(chs[top - 1], chs[top], a[i])) {           top--;         }         chs[++top] = a[i];       }       top++;       chs[top] = chs[0];       double ans = 0;       for (i = 0; i < top; i++) {         double xx = fabs(chs[i].x - chs[i + 1].x);         double yy = fabs(chs[i].y - chs[i + 1].y);         if (xx > yy)           ans += xx;         else           ans += yy;       }       printf( %.0lf n , ans);     }   }   