Submission

Status:

[PPPP-SSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: theem1502

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-02-18 21:49:41

#include <bits/stdc++.h>
using namespace std;
    int dix[2] = {0,1};
    int diy[2] = {1,0};
    int row, collumn;
    const int INF = 1e9;
int dfs(int currentx, int currenty, int val, vector<vector<int>> &thearray) {
    if (currentx  < 0 || currenty < 0 || currentx >= row || currenty >= collumn) {
        return INF;
    }

    val += thearray[currentx][currenty];
    int thesum = 0;
    if (val <= 0) {
        thesum += -1*val + 1;
        val = 1;

    }
       if (currentx == row -1 && currenty == collumn - 1) {
        return min(thesum, 0);
    }
 //   cout << "debug " << currentx << " " << currenty << " " << val << "\n";
    int minsum = INF;
    for (int i = 0; i < 2; i++) {
        minsum = min(dfs(currentx + dix[i], currenty + diy[i], val, thearray), minsum);
    }

    return minsum + thesum;


}

int main() {

    cin >> row >> collumn;
    vector<vector<int>> thearray(row, vector<int> (collumn));
    for (int i = 0; i < row ;i++) {
        for (int j = 0; j < collumn; j++) {
            cin >> thearray[i][j];
        }
    }

    cout << dfs(0,0,0,thearray);


}