#include #include #include #define nmax 51 using namespace std; int main() { //freopen ("fin.in", "r", stdin); int N, A[nmax][nmax], L[nmax][nmax], C[nmax][nmax], maxim = INT_MIN, i, j, nr, lat, ax, ay, bx, by; scanf ("%d", &N); for (i = 1; i <= N; ++i) C[i][0] = 0; for (j = 1; j <= N; ++j) C[0][j] = 0; for (i = 1; i <= N; ++i) for (j = 1; j <= N; ++j) { scanf ("%d", &A[i][j]); L[i][j] = A[i][j] + L[i][j-1]; C[i][j] = A[i][j] + C[i-1][j]; if (A[i][j] > maxim) maxim = A[i][j]; } for (i = 1; i <= N; ++i) for (j = 1; j <= N; ++j) for (lat = 1; lat <= min(N - i, N - j); ++lat) { ax = i, ay = j, bx = i + lat, by = j + lat; nr = L[ax][by] - L[ax][ay - 1]; nr += L[bx][by] - L[bx][ay - 1]; nr += C[bx][ay] - C[ax - 1][ay]; nr += C[bx][by] - C[ax - 1][by]; nr -= (A[ax][ay] + A[ax][by] + A[bx][ay] + A[bx][by]); if (nr > maxim) maxim = nr; } printf ("%d\n", maxim); /*for (i = 1; i <= N; ++i) { for (j = 1; j <= N; ++j) printf ("%d ", L[i][j]); printf ("\n"); } printf ("\n"); for (i = 1; i <= N; ++i) { for (j = 1; j <= N; ++j) printf ("%d ", C[i][j]); printf ("\n"); }*/ return 0; }