Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: erng
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.136 second
Submitted On: 2026-03-05 08:04:41
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll nx=1005;
ll n, m, mp[nx][nx], l, r, md, dp[nx][nx], k;
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>n>>m;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=m; j++)
{
cin>>mp[i][j];
}
}
l=1;
r=1e15;
while (l<r)
{
md=l+(r-l)/2;
dp[1][1]=md+mp[1][1];
if (dp[1][1]<=0) dp[1][1]=-1e15;
for (int i=1; i<=n; i++)
{
for (int j=1; j<=m; j++)
{
if (i==1 && j==1) continue;
dp[i][j]=-1e15;
if (j>1) dp[i][j]=max(dp[i][j], dp[i][j-1]+mp[i][j]);
if (i>1) dp[i][j]=max(dp[i][j], dp[i-1][j]+mp[i][j]);
if (dp[i][j]<=0) dp[i][j]=-1e15;
}
}
if (dp[n][m]<=0)
{
l=md+1;
}
else
{
r=md;
}
}
cout<<r;
}