Submission
Status:
[PPPPPPPPPPPPPPP]
Score: 100
User: Pera
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.089 second
Submitted On: 2025-03-24 14:09:30
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n, m; cin >> n >> m;
vector<vector<int>> pot(n, vector<int>(m, -1));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> pot[i][j];
}
}
vector<vector<int>> hpmemo(n, vector<int>(m, -1));
hpmemo[n - 1][m - 1] = max(1, 1 - pot[n - 1][m - 1]);
for (int i = n - 1; i >= 0; i--) {
for (int j = m - 1; j >= 0; j--) {
// edge cases
if (i == n -1 && j == m - 1) continue;
else if (i == n - 1 && j < m - 1) {
hpmemo[i][j] = max(1, hpmemo[i][j+1] - pot[i][j]);
continue;
} else if (j == m - 1 && i < n - 1) {
hpmemo[i][j] = max(1, hpmemo[i + 1][j] - pot[i][j]);
continue;
}
hpmemo[i][j] = max(1, min(hpmemo[i][j+1], hpmemo[i+1][j]) - pot[i][j]);
}
}
cout << hpmemo[0][0] << '\n';
}