Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: KantaponZ
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.058 second
Submitted On: 2025-11-03 17:21:19
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int N, M;
ll dp[1005][1005];
ll A[1005][1005];
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> N >> M;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
cin >> A[i][j];
}
}
for (int i = 1; i <= N; i++) for (int j = 1; j <= M; j++) dp[i][j] = 1e18;
dp[N][M] = max(1LL, -A[N][M] + 1);
for (int i = N; i >= 1; i--) {
for (int j = M; j >= 1; j--) {
dp[i - 1][j] = min(dp[i - 1][j], dp[i][j] - A[i - 1][j]);
dp[i][j - 1] = min(dp[i][j - 1], dp[i][j] - A[i][j - 1]);
if (dp[i - 1][j] <= 0) dp[i - 1][j] = 1;
if (dp[i][j - 1] <= 0) dp[i][j - 1] = 1;
}
}
/*
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
cout << dp[i][j] << " ";
}
cout << "\n";
}*/
cout << dp[1][1];
}