/*Code by Bia Beniamin Problem: */ /* WI a; a.RS(5,VI(5)); a[0][0]=5; VI a; a.RS(5); a[0]=5; PII a(4,5); cout<0) { cout< #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long; #define PII pair #define PCI pair #define VB vector #define VI vector #define VC vector #define WI vector #define RS resize #define X first #define Y second #define FORN(i,n) for(int i=0;i=b;--i) #define REPEAT do #define UNTIL(x) while((x)) #define IN_FILE "date.in" #define OUT_FILE "date.out" ifstream f(IN_FILE); ofstream g(OUT_FILE); //variables int n,max_answer; WI sum, x; //other functions void reading() { cin >> n; x.RS(n, VI(n)); sum.RS(n, VI(n)); FORN(i, n) { FORN(j, n) { cin >> x[i][j]; } } } void solving() { if (n == 1) { cout << x[0][0]; return; } sum[0][0] = x[0][0]; FOR(i,1, n-1) { sum[0][i] = sum[0][i - 1] + x[0][i]; sum[i][0] = sum[i - 1][0] + x[i][0]; } FOR(i,1, n-1) { FOR(j, 1, n - 1) { sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1]+x[i][j]; } } FORN(i1, n) { FORN(j1, n) { FOR(i2, i1+1, n - 1) { FOR(j2, j1+1, n - 1) { int aux; if (i1 == 0 && j1 == 0) { aux = 0; } else if (i1 == 0) { aux = sum[i2-1][j1]; } else if (j1 == 0) { aux = sum[i1-1][j2]; } else { aux = sum[i1 - 1][j1] + sum[i1][j1 - 1] - sum[i1 - 1][j1 - 1]; } int aux3 = sum[i2-1][j2-1] - sum[i1][j2-1] - sum[i2-1][j1] + sum[i1][j1]; if (i2 - i1 == 1 && j2 - j1 == 1) { aux3 = 0; } int aux2 = sum[i2][j2] - aux-aux3; max_answer = max(aux2,max_answer); } } } } } void write_data() { if (n > 1) { cout << max_answer; } } int main() { reading(); solving(); write_data(); }