#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<vector<long long>> a(n, vector<long long>(m)); for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) cin >> a[i][j]; const long long INF = (1LL << 60); vector<long long> dp(m + 1, INF); // dp[j]:从 (i,j) 到终点至少需要的血量 dp[m - 1] = 1; // 让右下角用统一转移计算一次 for (int i = n - 1; i >= 0; --i) { dp[m] = INF; // 越界哨兵 for (int j = m - 1; j >= 0; --j) { long long need = min(dp[j], dp[j + 1]); dp[j] = max(1LL, need - a[i][j]); } } cout << dp[0] << '\n'; return 0; }