Submission

Status:
[PPPPPPPPPPPPPPP]

Score: 100

User: Nightingale

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

Language: cpp

Time: 0.075 second

Submitted On: 2025-03-27 23:09:14

#include <bits/stdc++.h>
using namespace std;
int main() 
{
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int a;
  int b;
  cin >> a >> b;
  vector<vector<int>> maze(a,vector<int>(b,0));
  vector<vector<int>> dp(a,vector<int>(b,0));
  for(int i=0;i<a;i++){
    for(int j=0;j<b;j++){
      cin >> maze[i][j];
    }
  }
  dp[a-1][b-1] = max(1,1-maze[a-1][b-1]);
  for(int i=a-2;i>=0;i--){
    dp[i][b-1] = max(1,dp[i+1][b-1]-maze[i][b-1]);
  }
  for(int i=b-2;i>=0;i--){
    dp[a-1][i] = max(1,dp[a-1][i+1]-maze[a-1][i]);
  }
  for(int i=b-2;i>=0;i--){
    for(int j=a-2;j>=0;j--){
      dp[j][i] = max(1,min(dp[j+1][i],dp[j][i+1])-maze[j][i]);
    }
  }
  cout << dp[0][0];
}