只有三十分
#include<bits/stdc++.h>
using namespace std;
const int MAX=1e3+10;
int a[MAX][MAX],toon[MAX],todown[MAX],f[MAX];//记录向上和向下dp的结果
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
memset(toon,-0x3f,sizeof(toon));
memset(todown,-0x3f,sizeof(todown));
//f[1]=a[1][1];
//for(int i=1;i<=m;i++)
//f[i]=max(f[i-1],0)+a[1][i];
for(int j=1;j<=m;j++)//列优先
{
for(int i=1;i<=n;i++)
todown[i]=max(todown[i-1],f[i])+a[i][j];
for(int i=n;i>=1;i--)
toon[i]=max(toon[i+1],f[i])+a[i][j];
for(int i=1;i<=n;i++)
f[i]=max(todown[i],toon[i]);
}
for(int i=1;i<=n;i++)
cout<<f[i]<<" ";
//cout<<f[n];
return 0;
}