Submission
Status:
[-SSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: erng
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-05 08:04:22
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll nx=1005;
ll n, m, mp[nx][nx], dp[nx][nx], l=1, r=4e18, x, a;
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];
}
}
while (l<r)
{
x=(l+r)/2;
a=0;
dp[1][1]=x;
for (int i=2; i<=m; i++)
{
dp[1][i]=dp[1][i-1]+mp[1][i];
}
for (int i=2; i<=n; i++)
{
dp[i][1]=dp[i-1][1]+mp[i][1];
}
for (int i=2; i<=n; i++)
{
for (int j=2; j<=m; j++)
{
if (dp[i-1][j]+mp[i][j]<=0 && dp[i][j-1]+mp[i][j]<=0)
{
dp[i][j]=4e18;
}
dp[i][j]=max(dp[i-1][j]+mp[i][j], dp[j][i-1]+mp[i][j]);
}
}
if (a==0)
{
r=x;
}
else
{
l=x+1;
}
}
cout<<l;
}