Submission
Status:
[PPPPPP-SSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: Kx
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-18 10:18:49
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m; cin >> n >> m;
vector<vector<int>> mp(n + 2, vector<int>(m + 2)), dp(n + 2, vector<int>(m + 2, 1e8));
for(int i = 1; i <= n; ++i) {
for(int j = 1; j <= m; ++j) {
cin >> mp[i][j];
}
}
dp[n][m] = max(1, 1 - dp[n][m]);
for(int i = n; i > 0; --i) {
for(int j = m; j > 0; --j) {
if(i == n && j == m) continue;
if(i >= 1 && j >= 1) {
int n = min(dp[i + 1][j], dp[i][j + 1]);
dp[i][j] = max(1, n - mp[i][j]);
} else if(i == 1 || i == n && j > 1) {
dp[i][j] = dp[i][j + 1] - mp[i][j];
} else if(i > 1 && j == 1 || j == m) {
dp[i][j] = dp[i + 1][j] - mp[i][j];
}
}
}
cout << dp[1][1];
return 0;
}