#include #include using namespace std; int a[128][128]; int sp[128][128]; int main(int argc, char *argv[]) { freopen("maxsum.in", "r", stdin); freopen("maxsum.out", "w", stdout); memset(a, 0, sizeof(a)); memset(sp, 0, sizeof(sp)); int n; scanf("%d", &n); for (int i = 1; i <= n; i++) for (int j = 0; j <= n; j++) scanf("%d", &a[i][j]); for (int i = 1; i <= n; i++) { int s = 0; for (int j = 1; j <= n; j++) { s += a[j][i]; sp[j][i] = s; } } int smax2 = a[1][1], smax = 0; int sc = 0; for (int i1 = 1; i1 <= n; i1++) { for (int i2 = 1; i2 <= n; i2++) { smax = sc = sp[i2][1] - sp[i1 - 1][1]; for (int j = 2; j <= n; j++) { if (sc + sp[i2][j] - sp[i1 - 1][j] > sp[i1][j] - sp[i1 - 1][j]) sc = sc + sp[i2][j] - sp[i1 - 1][j]; else sc = sp[i2][j] - sp[i1 + 1][j]; if (sc > smax) smax = sc; } if (smax > smax2) smax2 = smax; } } printf("%d\n", smax2); return 0; }