Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Iamheretodoproblems

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

Language: cpp

Time: 0.167 second

Submitted On: 2026-03-21 22:07:28

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

int main() 
{
  int n,m;
  cin>>n>>m;
  vector<vector<int>> grid(n,vector<int>(m));
  for(int i=0;i<n;i++)
  {
    for(int j=0;j<m;j++)
    {
      cin>>grid[i][j];
    }
  }
  vector<vector<int>> dp(n,vector<int>(m));
  dp[n-1][m-1]=max(1,1-grid[n-1][m-1]);
  for(int i=n-1;i>=0;i--)
  {
    for(int j=m-1;j>=0;j--)
    {
      if(i==n-1&&j==m-1)  continue;
      int need=INT_MAX;
      if(i!=n-1)
      {
        need=min(need,dp[i+1][j]);
      }
      if(j!=m-1)
      {
        need=min(need,dp[i][j+1]);
      }
      dp[i][j]=max(1,need-grid[i][j]);
    }
  }
  cout<<dp[0][0];
}