func_code_string: #include <bits/stdc++.h>   using namespace std;   const double bili = acos(-1.0) / 4;   const double pi = acos(-1.0);   bool IN() {     char ch = getchar();     while (ch <  0  || ch >  9 ) ch = getchar();     return bool(ch -  0 );   }   int n, ptot, yuan;   bool a[2005][2005], vis[2005][2005];   int sum[2005][2005];   pair<int, int> Q[4000005];   int l, r, ans1;   int dx[4] = {-1, 1, 0, 0};   int dy[4] = {0, 0, -1, 1};   double C[100005];   bool edge(int x, int y) {     for (int i = 0; i < 4; i++) {       int zx = x + dx[i], zy = y + dy[i];       if (zx <= 0 || zx > n || zy <= 0 || zy > n || a[zx][zy] == 0) return 1;     }     return 0;   }   void bfs(int x, int y) {     Q[l = r = 1] = make_pair(x, y);     int bian = 0;     for (; l <= r; l++) {       pair<int, int> u = Q[l];       if (edge(u.first, u.second)) bian++;       for (int j = 0; j < 4; j++) {         pair<int, int> v = make_pair(u.first + dx[j], u.second + dy[j]);         if (v.first > 0 && v.first <= n && v.second > 0 && v.second <= n &&             !vis[v.first][v.second]) {           if (a[v.first][v.second] == 0) continue;           Q[++r] = v;           vis[v.first][v.second] = 1;         }       }     }     int mxy = -211, mxx = 0, miy = 21100, mix = 0, d = 0;     for (int i = (int)1; i <= (int)r; i++) {       if (Q[i].second > mxy) {         mxx = Q[i].first;         mxy = Q[i].second;       }       if (Q[i].second < miy) {         mix = Q[i].first;         miy = Q[i].second;       }     }     if (r > 101) {       sort(Q + 1, Q + r + 1);       for (int i = 1; i <= 8; i++)         for (int j = r - 7; j <= r; j++) {           d = max(d, ((Q[i].first - Q[j].first) * (Q[i].first - Q[j].first) +                       (Q[i].second - Q[j].second) * (Q[i].second - Q[j].second)));         }       ++ans1;       double z = 1.0 * d / r;       if (z < 1.55) yuan++;     }   }   int main() {     scanf( %d , &n);     for (int i = (int)1; i <= (int)n; i++)       for (int j = (int)1; j <= (int)n; j++) a[i][j] = IN();     for (int i = (int)1; i <= (int)n; i++)       for (int j = (int)1; j <= (int)n; j++)         sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];     for (int i = (int)1; i <= (int)n; i++) {       for (int j = (int)1; j <= (int)n; j++) {         int u = ((((i) < (j) ? (i) : (j))) <                          (((n - i + 1) < (n - j + 1) ? (n - i + 1) : (n - j + 1)))                      ? (((i) < (j) ? (i) : (j)))                      : (((n - i + 1) < (n - j + 1) ? (n - i + 1) : (n - j + 1))));         u = ((u) < (4) ? (u) : (4));         int sm = sum[i + u - 1][j + u - 1] - sum[i - u + 1 - 1][j + u - 1] -                  sum[i + u - 1][j - u + 1 - 1] +                  sum[i - u + 1 - 1][j - u + 1 - 1],             total = (2 * u) * (2 * u);         double lv = 1. * sm / total;         if (lv > 0.5)           a[i][j] = 1;         else           a[i][j] = 0;       }     }     for (int i = (int)1; i <= (int)n; i++)       for (int j = (int)1; j <= (int)n; j++) {         if (vis[i][j]) continue;         bfs(i, j);       }     sort(C + 1, C + ans1 + 1);     printf( %d %d n , yuan, ans1 - yuan);     return 0;   }   