许熠谦 • 2年前
using namespace std; const int N=100; int n,m; __int128 a[N][N],f[N][N]; template inline void read(T &x){
x=0;int w=1;
char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
for(;ch>='0'&&ch<='9';ch=getchar())
x=(x<<3)+(x<<1)+(ch&15);
x*=w;
} inline void write(__int128 x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
} int128 dp(int128 sum[]) {
memset(f,0,sizeof(f));
int i,j;
for(i=0;i<m;i++)
for(j=1;i+j<=m;j++)
f[j][i+j]=max(2*(f[j+1][i+j]+sum[j]),2*(f[j][i+j-1]+sum[i+j]));
return f[1][m];
} int main() {
read(n),read(m);
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
read(a[i][j]);
__int128 ans=0;
for(i=1;i<=n;i++)
ans+=dp(a[i]);
write(ans);
return 0;
}
评论:
请先登录,才能进行评论