#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[1005][1005], b[1005][1005], c[1005][1005], d[1005][1005], e[1005][1005];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, ans=-1e18;
cin >> n >> m;
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
cin >> a[i][j];
for (int i=0; i<=n+1; i++)
{
for (int j=0; j<=m+1; j++)
{
b[i][j]=1e18;
c[i][j]=-1e18;
d[i][j]=1e18;
e[i][j]=-1e18;
}
}
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
b[i][j]=min(min(b[i-1][j], b[i][j-1]), a[i][j]-i-j);
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
c[i][j]=max(max(c[i-1][j], c[i][j-1]), a[i][j]+i+j);
for (int i=1; i<=n; i++)
for (int j=m; j>=1; j--)
d[i][j]=min(min(d[i-1][j], d[i][j+1]), a[i][j]-i+j);
for (int i=1; i<=n; i++)
for (int j=m; j>=1; j--)
e[i][j]=max(max(e[i-1][j], e[i][j+1]), a[i][j]+i-j);
for (int i=1; i<=n; i++)
{
for (int j=1; j<=m; j++)
{
ans=max(ans, a[i][j]-i-j-b[i][j]-1);
ans=max(ans, -a[i][j]-i-j+c[i][j]-1);
ans=max(ans, a[i][j]-i+j-d[i][j]-1);
ans=max(ans, -a[i][j]-i+j+e[i][j]-1);
}
}
cout << ans;
}
# | 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... |