Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Quaoar

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

Language: cpp

Time: 0.173 second

Submitted On: 2026-03-11 18:41:44

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

int main(){
    int n , m;
    cin >> n >> m;
    vector<vector<int>> grid(n + 2 , vector<int> (m + 2));
    for (int i = 1 ; i <= n ; i++){
        for (int j = 1 ; j <= m ; j++){
            cin >> grid[i][j];
        }
    }
    vector<vector<int>> dp(n + 2, vector<int> (m + 2, 1e9));

    dp[n][m] = max(1 , 1 - grid[n][m]);

    for (int i = n ; i >= 0 ; i--){
        for (int j = m ; j >= 0 ; j--){
            if (i == n && j == m) continue;
                int need = min(dp[i + 1][j] , dp[i][j + 1]) - grid[i][j];
                dp[i][j] = max(1 , need);

        }
    }
    cout << dp[1][1];
}