Submission

Status:
[PPPPPPPPPPPPPPP]

Score: 100

User: krittaphot

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

Language: cpp

Time: 0.274 second

Submitted On: 2025-03-16 15:32:09

#include <bits/stdc++.h>

using namespace std;

int main()
{
	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,vector<int> (m));
	for(int i = n-1;i>=0;i--){
		for(int j = m-1;j>=0;j--){
			if(i == n-1 && j == m-1){
				dp[i][j] = max(1,1-v[i][j]);
			}
			else if(i == n-1){
				dp[i][j] = max(1,dp[i][j+1]-v[i][j]);
			}
			else if(j == m-1){
				dp[i][j] = max(1,dp[i+1][j]-v[i][j]);
			}
			else{
				dp[i][j] = max(1,min(dp[i+1][j],dp[i][j+1])-v[i][j]);
			}
		}
	}
	
	cout << dp[0][0];
}