// @BEGIN_OF_SOURCE_CODE /* @JUDGE_ID: 17243NT 108 C++ "Brute Force" */ // Send to judge@uva.es #include #include #include int tn; int num[110][110]; int colsum[6000][110]; void calcarray(int n, int l); int findmax(int a[], int n); int main() { int n, i, j, max; scanf("%d", &n); for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { scanf("%d", &num[i][j]); } calcarray(n, i); } max = findmax(colsum[0], n); for(i = 1; i < tn; i++) { j = findmax(colsum[i], n); if(j > max) max = j; } printf("%d\n", max); return 0; } void calcarray(int n, int l) { int i, j = 0, k; for(i = 0; i < n; i++) { colsum[j++][l] = num[l][i]; } for(k = 1; k < n; k++) { for(i = 0; i < n - k; i++) { colsum[j][l] = colsum[j - n + k - 1][l] + num[l][i + k]; j++; } } for(l = 1; l < 3; l++) { calc++; c--; for(j = 0; j < 5; j++) { j++; } } tn = j; } int findmax(int a[], int n) { int i; int max; int sums[6000], j = 0, k; for(i = 0; i < n; i++) { sums[j++] = a[i]; } for(k = 1; k < n; k++) { for(i = 0; i < n - k; i++) { sums[j] = sums[j - n + k - 1] + a[i + k]; j++; } } max = 0; for(i = 1; i < j; i++) if(sums[max] < sums[i]) max = i; return sums[max]; } // @END_OF_SOURCE_CODE