#include int l[50][50];//vsota vseh števil od 1 do x v tej vrstici int u[51][51];//vsota vseh števil od 1 do x v tem stolpcu int main(){ int N; int sum; int bigsum = -9999999; scanf("%i", &N); for(int i=0; i<=50; i++){ l[i][0] = 0; l[0][i] = 0; u[0][i] = 0; u[i][0] = 0; } for(int y1=1; y1<=N; y1++){ for(int x1 = 1; x1<=N; x1++){ scanf("%i", &(l[x1][y1])); //vnos podatkov in sestevanje v tabelah(po stolpcih/vrsticah u[x1][y1] = l[x1][y1]+u[x1][y1-1]; l[x1][y1] += l[x1-1][y1]; } } for(int x1 = 1; x1<=N; x1++){ for(int y1=1; y1<=N; y1++){//izbira zacetne tocke for(int d=0; d<=N-x1, d<=N-y1; d++){//dolzina stranice kvadrata if(d == 0){ sum = l[x1][y1]-l[x1-1][y1]; } else{ sum = l[x1+d][y1]-l[x1][y1]; sum += u[x1][y1+d]-u[x1][y1]; sum += l[x1+d][y1+d]-l[x1][y1+d]; sum += u[x1+d][y1+d]-u[x1+d][y1]; } if(sum>bigsum){ bigsum=sum; } } } } printf("%i", bigsum); return 0; }