#include<iostream> #include<cstring> #include<algorithm> using namespace std; int a[51][51],f[105][51][51]; int main() { int m,n; cin>>m>>n; for (int i=1;i<=m;i++) for (int j=1;j<=n;j++) cin>>a[i][j]; memset(f,0,sizeof(f)); f[2][1][1]=0; for (int k=3;k<=m+n-1;k++) for (int i=1;i<k;i++) for (int j=i+1;j<k;j++) if (k-i>=1&&k-i<=n&&k-j>=1&&k-j<=n) { f[k][i][j]=max(f[k][i][j],f[k-1][i][j]); f[k][i][j]=max(f[k][i][j],f[k-1][i-1][j]); f[k][i][j]=max(f[k][i][j],f[k-1][i][j-1]); f[k][i][j]=max(f[k][i][j],f[k-1][i-1][j-1]); f[k][i][j]+=a[i][k-i]+a[j][k-j]; } cout<<f[m+n-1][m-1][m]<<endl; return 0; } /************************************************************** Problem: 2282 User: admin Language: C++ Result: Accepted Time:73 ms Memory:3152 kb ****************************************************************/