Submission
Status:
[PPPPPPPPPPPPPP-]
Subtask/Task Score:
{0/100}
Score: 0
User: GastrointestinalTrackInflammation
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.079 second
Submitted On: 2026-10-05 14:35:42
#include<bits/stdc++.h>
using namespace std;
#define inall(x) for(auto& i:x)cin>>i;
#define outall(x) {for(auto i:x)cout<<i<<' ';cout<<endl;}
#define ini(x,y) for(auto& i:x)i=y;
#define tout(x) cout<<"DEBUG! :"<<x<<endl;
#define rout(x) {cout<<x<<endl;return;}
using ll = long long;
using df = double;
template<typename pair1,typename pair2>
istream& operator>>(istream& in,pair<pair1,pair2>&p) {return in>>p.first>>p.second;}
template <typename pair1, typename pair2>
ostream& operator<<(ostream& out,const pair<pair1,pair2>&p) {return out<<endl<<p.first<<' '<< p.second;}
void solve(){
int n,m;
cin>>n>>m;
ll l=1,r=10000*(1000)+1,mid;
ll ans=LONG_LONG_MAX;
ll a[n][m];
for(int i=0;i<n;i++)inall(a[i]);
while(l<=r){
mid=l+(r-l)/2;
ll temp[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
ll ansi=-1e9;
ll ansj=-1e9;
if(i!=0)ansi=temp[i-1][j];
if(j!=0)ansj=temp[i][j-1];
if(i==0 && j==0)ansi=ansj=0;
temp[i][j]=max(ansi,ansj)+a[i][j];
if(-temp[i][j]>=mid)temp[i][j]=-1e9;
}
}
if(-temp[n-1][m-1]<mid){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
cout<<ans<<endl;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int t=1;
//cin>>t;
while(t--)solve();
return 0;
}