Submission

Status:

[PPPPPP-SSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: C12

Problemset: อัศวินขี่ม้าขาว

Language: cpp

Time: 0.002 second

Submitted On: 2025-11-04 14:13:54

#include <bits/stdc++.h>
using namespace std;

#define f first
#define s second
#define pii pair<ll,ll>
#define piii pair<ll,pii>
#define ll long long
 
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
ll mod = 1000000007;

void solve(){
    ll n,m,l;

    cin >> n >> m;

    vector<vector<ll>>v(n,vector<ll>(n, 0)), dp(n,vector<ll>(m, 0));

    for(int i = n-1 ;i >= 0;i--){
        for(int j = m-1;j >= 0;j--){
            cin >> v[i][j];
        }
    }

    dp[0][0] = min(v[0][0],-1LL);
    for(int i = 1 ;i < n;i++){
        dp[i][0] = v[i][0]+dp[i-1][0];
        if(dp[i][0] >= 0)   dp[i][0] = -1;
    }
    
    for(int j = 1;j < m;j++){
        dp[0][j] = v[0][j]+ dp[0][j-1];
        if(dp[0][j] >= 0)   dp[0][j] = -1;
    }

    for(int i = 1;i < n;i++){
        for(int j = 1;j < m;j++){
            dp[i][j] = max(dp[i-1][j],dp[i][j-1])+v[i][j];
            if(dp[i][j] >= 0)
                dp[i][j] = -1;
        }
    }

    // for(int i = n-1;i >= 0;i--){
    //     for(int j = m-1;j >= 0;j--){
    //         cout << dp[i][j] << ' ';
    //     }
    //     cout << '\n';
    // }

    ll out = max(dp[n-1][m-1]*-1LL,1LL);

    cout << out;
    
    
    return;

}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll q;
 
    // cin >> q;

    // while(q--) 
        solve();

    return 0;
}