Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int memo[110][110];
- int mark[110][110];
- int MAXINT = 0x3F3F3F3F;
- int N, M;
- int grid[110][110];
- int DP(int i, int j, int sum) {
- if(i >= N || j >= M) return MAXINT;
- if(i < 0) return MAXINT;
- int &best = memo[i][j];
- if((sum+grid[i][j])>best) return MAXINT;
- sum += grid[i][j];
- best=min(DP(i-1, j+1, sum), min(DP(i, j+1, sum), DP(i+1, j+1, sum)));
- return best;
- }
- int main() {
- int i, j;
- cin >> N >> M;
- for (i=0; i<M; i++) {
- for(j=0; j<N; j++) {
- cin >> grid[j][i];
- }
- }
- int sol=0, temp=0;
- memset(memo, MAXINT, sizeof(memo));
- for(i=0; i<N; i++) {
- temp=DP(i, 0, 0);
- if(sol<temp) sol=temp;
- }
- cout << sol << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement