View Code of Problem 182

#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.


Back to problem 182