Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: navysrimuang

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

Language: cpp

Time: 0.171 second

Submitted On: 2026-03-12 22:18:18

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n,m;
	cin >> n >> m;
	vector<vector<int>> v(n+2,vector<int>(m+2)), dp(n+2,vector<int>(m+2,1e9));

	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			cin >> v[i][j];
		}
	}
	//dp[i][j] = need at least ... to get here 
	//clamp 1
	dp[n][m] = max(1,1-v[n][m]);

	for(int i = n;i>0;i--){
		for(int j = m;j>0;j--){
			if(i == n && j == m) continue;
			int need = min(dp[i+1][j],dp[i][j+1]);
			dp[i][j] = max(1,need-v[i][j]);
		}
	}

	cout << dp[1][1] << "\n";
	return 0;
}