func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     double x, y;     point operator-(point A) { return (point){x - A.x, y - A.y}; }     double operator*(point A) { return x * A.y - y * A.x; }     double dis() { return sqrt(x * x + y * y); }   } a[1005][1005], t[1005], E[1005];   int n, vis[1005][1005];   double r[1005][1005];   point Mid(point a, point b) {     return (point){(a.x + b.x) / 2, (a.y + b.y) / 2};   }   double disline(int i, point A) { return abs(E[i] * (A - t[i]) / E[i].dis()); }   int ch(int R) { return R % n ? R % n : n; }   int main() {     cin >> n;     for (int i = 1; i <= n; i++) scanf( %lf%lf , &t[i].x, &t[i].y);     for (int i = 1; i <= 2 * n; i++) t[n + i] = t[i];     for (int i = 1; i <= 3 * n; i++) E[i] = t[i + 1] - t[i];     for (int L = 1, R = L + 1, nw = L; L <= n; L++)       for (R--, nw = max(L, nw); R == L || E[L] * E[R] > 0.5; R++) {         while (nw < R && disline(L, t[nw + 1]) < disline(R, t[nw + 1])) ++nw;         point le = t[nw], ri = t[nw + 1];         for (int j = 1; j <= 42; j++) {           point mid = Mid(le, ri);           if (disline(L, mid) < disline(R, mid))             le = mid;           else             ri = mid;         }         point P = Mid(le, ri);         a[L][ch(R)] = P;         r[L][ch(R)] = max(disline(L, P), disline(R, P));         vis[L][ch(R)] = 1;       }     double ans = 1e7;     point a1, a2;     for (int L = 1; L <= n; L++)       for (int R = L; R <= L + n; R++)         if (vis[L][ch(R)] && vis[ch(R + 1)][ch(L - 1 + n)]) {           double newr = max(r[L][ch(R)], r[ch(R + 1)][ch(L - 1 + n)]);           if (newr < ans)             ans = newr, a1 = a[L][ch(R)], a2 = a[ch(R + 1)][ch(L - 1 + n)];         }     printf( %.10f n%.10f %.10f n%.10f %.10f n , ans, a1.x, a1.y, a2.x, a2.y);     return 0;   }   