#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 = 0;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |