Submission #1235571

#TimeUsernameProblemLanguageResultExecution timeMemory
1235571AishaMaxcomp (info1cup18_maxcomp)C++20
0 / 100
1 ms584 KiB
#include "bits/stdc++.h"

using namespace std;

#define int long long

signed main() {
    int n, m;
    cin >> n >> m;

    vector <vector <int>> a(n + 1, vector <int> (m + 1));
    for (int i = 1; i <= n; i ++) 
        for (int j = 1; j <= m; j ++) cin >> a[i][j];

    int ans = -1;
    
    vector <vector <vector <int>>> dp(n + 1, vector <vector <int>> (m + 1, vector <int> (4)));
    for (int i = 1; i <= n; i ++) {
        for (int j = 1; j <= m; j ++) {
            dp[i][j] = {a[i][j], a[i][j], 1, -1};

            int x = max(a[i][j], dp[i][j - 1][0]) - min(a[i][j], dp[i][j - 1][1]) - dp[i][j - 1][2] - 1;
            int y = max(a[i][j], dp[i - 1][j][0]) - min(a[i][j], dp[i - 1][j][1]) - dp[i - 1][j][2] - 1;

            if (j == 1) x = -1;
            if (i == 1) y = -1;

            if (dp[i][j][3] < x) dp[i][j] = {max(a[i][j], dp[i][j - 1][0]), min(a[i][j], dp[i][j - 1][1]), dp[i][j - 1][2] + 1, x};
            if (dp[i][j][3] < y) dp[i][j] = {max(a[i][j], dp[i - 1][j][0]), min(a[i][j], dp[i - 1][j][1]), dp[i - 1][j][2] + 1, y}; 

            ans = max(ans, dp[i][j][3]);
        }
    }

    cout << ans << endl;

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