#include <bits/stdc++.h>
using namespace std;
const int M = 1e3 + 6;
int pre[M][M][4], a[M][M];
int main()
{
int n,m;
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++)
for (int k=0;k<4;k++)
pre[i][j][k]=-15e8;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
pre[i][j][0]=max(pre[i-1][j][0],pre[i][j-1][0]);
pre[i][j][0]=max(pre[i][j][0],-a[i][j]+i+j);
}
for (int i=1;i<=n;i++)
for (int j=m;j>=1;j--)
{
pre[i][j][1]=max(pre[i-1][j][1],pre[i][j+1][1]);
pre[i][j][1]=max(pre[i][j][1],-a[i][j]+i-j);
}
for (int i=n;i>=1;i--)
for (int j=1;j<=m;j++)
{
pre[i][j][2]=max(pre[i+1][j][2],pre[i][j-1][2]);
pre[i][j][2]=max(pre[i][j][2],-a[i][j]-i+j);
}
for (int i=n;i>=1;i--)
for (int j=m;j>=1;j--)
{
pre[i][j][3]=max(pre[i+1][j][3],pre[i][j+1][3]);
pre[i][j][3]=max(pre[i][j][3],-a[i][j]-i-j);
}
int ans=-1;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
ans=max(ans,a[i][j]+max(pre[i][j][0]-i-j,pre[i][j][1]-i+j)-1),ans=max(ans,a[i][j]+max(pre[i][j][2]+i-j,pre[i][j][3]+i+j)-1);
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... |