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;
}