Submission

Status:

[PPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: KantaponZ

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

Language: cpp

Time: 0.061 second

Submitted On: 2025-09-04 08:25:59

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

#define ll long long
int N, M;
ll dp[1005][1005];

int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    for (int i = 0; i < 1005; i++) {
        for (int j = 0; j < 1005; j++) {
            dp[i][j] = 1e18;
        }
    }
    cin >> N >> M;
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= M; j++) {
            cin >> dp[i][j];
        }
    }
    
    dp[N][M] = max(1LL, 1 - dp[N][M]);
    for (int i = N; i >= 1; i--) {
        for (int j = M; j >= 1; j--) {
            if (i == N && j == M) continue;
            dp[i][j] = max(1LL, min(dp[i+1][j], dp[i][j+1]) - dp[i][j]);
            
        }
    }

    cout << dp[1][1];
}

/*

2 3
-3 -6 -3
2 2 -3

4 3
-3 -6 -3
2 2 -3
-8 -8 -8
1 1 1

4 3
1 1 1 
1 1 1
1 1 1
1 1 1
*/