传送门
直接模拟就行,读准题。
using namespace std;
const int maxn = 1000 + 5;
long long a[maxn][maxn];
int main() {
long long n,m;
cin >> n >> m;
for(ll i = 0; i < n; i++)
for(ll j = 0; j < m; j++) {
cin >> a[i][j];
}
long long maxsum=-9999999;
long long sum=0;
ll max1=-1,max2=-1;
for(ll i=0;i<n;i++)
{
sum=a[i][0];
for(ll j=0;j<m-1;j++)
{if(a[i][j]<a[i][j+1])
sum+=a[i][j+1];
else {
//cout<<sum<<endl;
max1=max(sum,max1);
//cout<<max1<<endl;
//ans=sum;
sum=a[i][j+1];
}
}
max1=max(sum,max1);//这里是坑点,如果走到底的话,也要比较一次sum与max1的大小。
maxsum=max(maxsum,max1);
}
//cout<<maxsum<<endl;
for(ll i=0;i<m;i++)
{
sum=a[0][i];
for(ll j=0;j<n-1;j++)
{if(a[j][i]<a[j+1][i])
sum+=a[j+1][i];
else
{
max2=max(max2,sum);
// cout<<max2<<endl;
sum=a[j+1][i];
}
}
max2=max(max2,sum);
maxsum=max(maxsum,max2);
}
cout<<maxsum<<endl;
return 0;
}