#include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <iostream> #include <map> #include <set> #include <stack> #include <string> #include <vector> using namespace std; int main(void) { int n; cin >> n; int arr[n][n]; int total[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> arr[i][j]; total[i][j] = arr[i][j]; if (i != 0) total[i][j] += total[i - 1][j]; } } int ans = INT_MIN; for (int i = 0; i < n; i++) { int result[n]; for (int j = i; j < n; j++) { for (int k = 0; k < n;k++){ if(i == 0) result[k] = total[j][k]; else result[k] = total[j][k] - total[i - 1][k]; } } int mmax[n]; mmax[0] = result[0]; int maxx = INT_MIN; for (int j = 1; j < n;j++){ mmax[j] = (mmax[j - 1] > 0) ? mmax[j - 1] + result[j] : result[j]; if(maxx < mmax[j]) maxx = mmax[j]; } ans = ans < maxx ? maxx : ans; } cout << ans << endl; } |
Double click to view unformatted code.