Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: C12
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.064 second
Submitted On: 2025-11-04 14:18:37
#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>(m, 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],0LL)-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;
}