func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 2548;   bool g[N][N], c[N][N], v[N][N];   int ng[N][N], sg[N][N], sc[N][N];   int c_square, c_circle, n;   template <class T>   inline T sqr(T x) {     return x * x;   }   int qx[N * N], qy[N * N], tcnt;   inline void solve(int x, int y) {     const int dx[4] = {0, 0, 1, -1}, dy[4] = {-1, 1, 0, 0};     int l(0), r(0);     pair<int, int> aux(x, y);     ++r;     qx[r] = x;     qy[r] = y;     v[x][y] = true;     while (l < r) {       ++l;       int cx(qx[l]), cy(qy[l]);       for (int i = 0; i < 4; ++i) {         int nx = cx + dx[i], ny = cy + dy[i];         if (!v[nx][ny] && g[nx][ny]) {           ++r;           qx[r] = nx;           qy[r] = ny;           v[nx][ny] = true;         }       }     }     int sqdmax(0), s(r);     if (s < 120) {       ++tcnt;       return;     }     for (int i = 1; i <= r; ++i) aux = min(aux, pair<int, int>(qx[i], qy[i]));     for (int i = 1; i <= r; ++i)       sqdmax = max(sqdmax, sqr(qx[i] - aux.first) + sqr(qy[i] - aux.second));     if (s < (double)sqdmax * 0.4 || s > (double)sqdmax * 0.86) return;     if (s > (double)sqdmax * 0.73)       ++c_circle;     else       ++c_square;   }   double calcRatio(int xl, int yl, int xr, int yr) {     return double(sg[xr][yr] - sg[xl - 1][yr] - sg[xr][yl - 1] +                   sg[xl - 1][yl - 1]) /            double(sc[xr][yr] - sc[xl - 1][yr] - sc[xr][yl - 1] +                   sc[xl - 1][yl - 1]);   }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; ++i)       for (int j = 1; j <= n; ++j) {         int t;         scanf( %d , &t);         g[i][j] = t;         c[i][j] = 1;         sg[i][j] = sg[i - 1][j] + sg[i][j - 1] - sg[i - 1][j - 1] + g[i][j];         sc[i][j] = sc[i - 1][j] + sc[i][j - 1] - sc[i - 1][j - 1] + c[i][j];       }     for (int i = 1; i <= n; ++i)       for (int j = 1; j <= n; ++j) {         ng[i][j] |= calcRatio(i - 2, j - 2, i + 2, j + 2) > 0.9;         ng[i][j] |= calcRatio(i, j, i + 4, j + 4) > 0.6;         ng[i][j] |= calcRatio(i - 4, j - 4, i, j) > 0.6;         ng[i][j] |= calcRatio(i - 4, j, i, j + 4) > 0.6;         ng[i][j] |= calcRatio(i, j - 4, i + 4, j) > 0.6;       }     for (int i = 1; i <= n; ++i)       for (int j = 1; j <= n; ++j) g[i][j] = ng[i][j];     for (int i = 1; i <= n; ++i)       for (int j = 1; j <= n; ++j)         if (!v[i][j] && g[i][j]) solve(i, j);     printf( %d %d n , c_circle, c_square);     return 0;   }   