#include"iostream"
#include"algorithm"
#include"cstdio"
#include"cstring"
#include"string"
#include"vector"
#include"queue"
#include"map"
#include"set"
#include"stack"
#include"cmath"
using namespace std;
int m,n,r=0;
int sum[1005][1005];
int a[1005][1005],b[1005][1005],c[1005][1005],d[1005][1005];
int main()
{
scanf("%d%d",&m,&n);
memset(sum,0,sizeof(sum));
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
scanf("%d",&sum[i][j]);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
a[i][j]=sum[i][j]+max(a[i][j-1],a[i-1][j]);
for(int i=m;i>=1;i--)
for(int j=n;j>=1;j--)
b[i][j]=sum[i][j]+max(b[i][j+1],b[i+1][j]);
for(int i=1;i<=m;i++)
for(int j=n;j>=1;j--)
d[i][j]=sum[i][j]+max(d[i][j+1],d[i-1][j]);
for(int i=m;i>=1;i--)
for(int j=1;j<=n;j++)
c[i][j]=sum[i][j]+max(c[i][j-1],c[i+1][j]);
for (int i = 2; i < m; ++i)
for (int j = 2; j < n; ++j) {
r = max(r, a[i][j-1] + b[i][j+1] + c[i+1][j] + d[i-1][j]);
r = max(r, a[i-1][j] + b[i+1][j] + c[i][j-1] + d[i][j+1]);
}
printf("%d\n",r);
return 0;
}
CodeForces - 429B
最新推荐文章于 2021-08-31 14:36:14 发布