Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: House123

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

Language: cpp

Time: 0.165 second

Submitted On: 2026-03-11 23:57:19

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


int main(){
    int n,m;
    cin >> n >> m;
    int minimum = 1e8;
    vector<vector<int>> grid(n+2,vector<int>(m+2,minimum));
    vector<vector<int>> dp(n+2,vector<int>(m+2,minimum)); //initialise base val later
    
    for(int i = 1 ; i <= n;i++){
        for(int j = 1 ; j <= m ; j++){
            cin >> grid[i][j];
        }
    }
    //base case
    dp[n][m] = max(1,1-grid[n][m]); //-3
    for(int i = n ; i >= 1;i--){
        for(int j = m ; j >= 1 ; j--){
            if(i == n && j == m){
                continue;
            }
            dp[i][j] = max(1,min(dp[i+1][j],dp[i][j+1]) - grid[i][j]);
            
        }
    }
    cout << dp[1][1];
    return 0;

}