Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: letdown

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

Language: cpp

Time: 0.080 second

Submitted On: 2026-03-14 13:45:01

#include <bits/stdc++.h>

#define int long long
using namespace std;
signed main() {
    cin.tie(0)->sync_with_stdio(0);

    int n, m;
    cin >> n >> m;
    vector<vector<int>> v(n, vector<int>(m));
    for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) cin >> v[i][j];

    vector<vector<int>> dp(n+2, vector<int>(m+2, LLONG_MAX));
    dp[n-1][m-1] = max(1LL, 1LL - v[n-1][m-1]);
    for (int i = n-1; i >= 0; i--) {
        for (int j = m-1; j >= 0; j--) {
            if (i == n-1 && j == m-1) continue;

            int need = min(dp[i+1][j], dp[i][j+1]);
            dp[i][j] = max(1LL, need - v[i][j]);
        }
    }

    cout << dp[0][0];
}