Submission #1286557

#TimeUsernameProblemLanguageResultExecution timeMemory
1286557mihajlo0404Maxcomp (info1cup18_maxcomp)C++20
15 / 100
2 ms576 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod = 1e9 + 7;
ll inf = 2000000000;
ll solve(vector<vector<ll>> & matrica, vector<vector<ll>> dpmini, vector<vector<ll>> dpmaxi, ll n) {
    ll m = matrica[0].size();
    for (ll i = 1; i < n; i++) {
        dpmaxi[i][0] = max(dpmaxi[i][0], dpmaxi[i - 1][0] + matrica[i - 1][0] - matrica[i][0] - 1);
        dpmini[i][0] = max(dpmini[i][0], dpmini[i - 1][0] - matrica[i - 1][0] + matrica[i][0] - 1);
    }
    for (ll i = 1; i < m; i++) {
        for (ll j = 0; j < n; j++) {
            if (j != 0) {
                dpmaxi[j][i] = max(dpmaxi[j][i], dpmaxi[j - 1][i] + matrica[j - 1][i] - matrica[j][i] - 1);
                dpmini[j][i] = max(dpmini[j][i], dpmini[j - 1][i] - matrica[j - 1][i] + matrica[j][i] - 1);
            }
            dpmaxi[j][i] = max(dpmaxi[j][i], dpmaxi[j][i - 1] + matrica[j][i - 1] - matrica[j][i] - 1);
            dpmini[j][i] = max(dpmini[j][i], dpmini[j][i - 1] - matrica[j][i - 1] + matrica[j][i] - 1);
        }
    }
    ll res = -1;
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < m; j++) {
            res = max(res, dpmaxi[i][j]);
            res = max(res, dpmini[i][j]);
        }
    }
    return res;
}
int main() {
    ll n, m;
    cin >> n >> m;
    vector<vector<ll>>matrica(n, vector<ll>(m));
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < m; j++) {
            cin >> matrica[i][j];
        }
    }
    vector<vector<ll>>dpmini(n, vector<ll>(m, -1));
    vector<vector<ll>>dpmaxi(n, vector<ll>(m, -1));
    ll maks1 = solve(matrica, dpmini, dpmaxi, n);
    for (ll i = 0; i < n; i++) {
        for (ll j = 0; j < m; j++) {
            swap(matrica[n - i - 1][j], matrica[i][j]);
        }
    }
    ll maks2 = solve(matrica, dpmini, dpmaxi, n);
    cout << max(maks1, maks2) << endl;





}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...