Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Quaoar
Problemset: อัศวินขี่ม้าขาว
Language: cpp
Time: 0.170 second
Submitted On: 2026-03-05 22:05:48
#include <bits/stdc++.h>
using namespace std;
vector <vector<int>> arr;
vector <vector<int>> dp;
int main(){
int n , m;
cin >> n >> m;
arr.resize(n + 2, vector<int>(m + 2, 0));
dp.resize(n + 2, vector<int>(m + 2, INT_MAX));
for (int i = 1 ; i <= n ; i++){
for (int j = 1 ; j <= m ; j++){
cin >> arr[i][j];
}
}
dp[n][m] = max(1, 1 - arr[n][m]);
for (int i = n ; i >= 1 ; i--){
for (int j = m ; j >= 1 ; j--){
if (i == n && j == m) continue;
int need = min(dp[i + 1][j] , dp[i][j + 1]) - arr[i][j];
dp[i][j] = max(1 , need);
}
}
/*
for (int i = 1 ; i <= n ; i++){
for (int j = 1 ; j <= m ; j++){
cout << dp[i][j] << " ";
}
cout << "\n";
}
*/
cout << dp[1][1];
return 0;
}