#include #define Nmax 56 using namespace std; int a[Nmax][Nmax], N, sumL[Nmax][Nmax], sumC[Nmax][Nmax]; int main(){ //freopen("fis.in", "r", stdin); scanf("%d", &N); for(int i = 1; i <= N; ++i){ for(int j = 1; j <= N; ++j){ scanf("%d", &a[i][j]); } } //Sum linie for(int i = 1; i <= N; ++i){ for(int j = 1; j <= N; ++j){ sumL[i][j] = sumL[i][j-1] + a[i][j]; } } //Sum coloana for(int j = 1; j <= N; ++j){ for(int i = 1; i <= N; ++i){ sumC[i][j] = sumL[i-1][j] + a[i][j]; } } //Corner int sol = -51*51*100; for(int i = 1; i <= N; ++i){ for(int j = 1; j <= N; ++j) for(int len = 1; len <= i && len <= j; ++len){ int c = 0; if(len > 1){ c= sumL[i][j] - sumL[i-len][j] + sumC[i][j] - sumL[i][j-len]; c += sumL[i - len + 1][j] - sumL[i - len + 1][j - len]; c += sumC[i][j - len + 1] - sumC[i - len][j-len + 1]; c -= a[i][j] + a[i-len + 1][j] + a[i-len+1][j-len+1]; } else { c = a[i][j]; } if(c > sol ) sol = c; } } printf("%d\n", sol); return 0; }