Submission #916885

#TimeUsernameProblemLanguageResultExecution timeMemory
916885andrei_iorgulescuMaxcomp (info1cup18_maxcomp)C++14
100 / 100
91 ms21316 KiB
#include <bits/stdc++.h>

using namespace std;

int n,m,a[1005][1005];
int bestmic[1005][1005],bestmare[1005][1005];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            cin >> a[i][j];
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            bestmare[i][j] = bestmic[i][j] = -1e9;
        }
    }
    for (int i = 1; i <= n; i++)
    {
        int mx = -1e9;
        int mn = -2e9;
        for (int j = 1; j <= m; j++)
        {
            mx = max(mx,a[i][j] + j);
            mn = max(mn,-a[i][j] + j);
            bestmare[i][j] = max(bestmare[i][j],mx - j);
            bestmic[i][j] = max(bestmic[i][j],mn - j);
        }
        mx = -1e9;
        mn = -2e9;
        for (int j = m; j >= 1; j--)
        {
            mx = max(mx,a[i][j] - j);
            mn = max(mn,-a[i][j] - j);
            bestmare[i][j] = max(bestmare[i][j],mx + j);
            bestmic[i][j] = max(bestmic[i][j],mn + j);
        }
    }
    for (int j = 1; j <= m; j++)
    {
        int mx = -1e9;
        int mn = -2e9;
        for (int i = 1; i <= n; i++)
        {
            mx = max(mx,a[i][j] + i);
            mn = max(mn,-a[i][j] + i);
            bestmare[i][j] = max(bestmare[i][j],mx - i);
            bestmic[i][j] = max(bestmic[i][j],mn - i);
        }
        mx = -1e9;
        mn = -2e9;
        for (int i = n; i >= 1; i--)
        {
            mx = max(mx,a[i][j] - i);
            mn = max(mn,-a[i][j] - i);
            bestmare[i][j] = max(bestmare[i][j],mx + i);
            bestmic[i][j] = max(bestmic[i][j],mn + i);
        }
    }
    /*for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
            cout << bestmare[i][j] << ' ';
        cout << '\n';
    }
    cout << '\n';
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
            cout << bestmic[i][j] << ' ';
        cout << '\n';
    }*/
    int ans = -1e9;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            ans = max(ans,bestmare[i][j] + bestmic[i][j] - 1);
    cout << ans;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...