Submission

Status:
Compilation Error

Score: 0

User: Heynewworld

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

Language: cpp

Time: 0.000 second

Submitted On: 2025-03-14 04:35:44

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int N, M;
    cin >> N >> M;
    
    vector<vector<int>> grid(N+1, vector<int>(M+1));
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= M; j++) {
            cin >> grid[i][j];
        }
    }
    
    vector<vector<int>> dp(N+1, vector<int>(M+1, INT_MAX));
    
    dp[N][M] = max(1, 1 - grid[N][M]);
    
    for (int i = N; i >= 1; i--) {
        for (int j = M; j >= 1; j--) {
            if (i == N && j == M) continue;
            
            int rightHP = (j + 1 <= M) ? dp[i][j+1] : INT_MAX;
            int downHP = (i + 1 <= N) ? dp[i+1][j] : INT_MAX;
            
            int minNeededHP = min(rightHP, downHP);
            
            dp[i][j] = max(1, minNeededHP - grid[i][j]);
        }
    }
    
    cout << dp[1][1] << endl;
    
    return 0;
}