Advertisement
SuitNdtie

Pioneer

Oct 8th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n,m;
  5.  
  6. int arr[2010][2010];
  7. int dp[2010][2010];
  8.  
  9. int cal(int I,int J){
  10.    
  11. //  int ans = arr[I][J];
  12.     if(dp[I][J] != -1)return dp[I][J];
  13.     int a,b,c,d;
  14.     a=b=c=d=0;
  15.     if(I%2 == 0){
  16.         if(I+1 < n && arr[I+1][J] != -1)a = cal(I+1,J);//+arr[I][J];
  17.         if(J+1 < m && arr[I][J+1] != -1)b = cal(I,J+1);//+arr[I][J];
  18.     }
  19.     else{
  20.         if(I+1 < n && arr[I+1][J] != -1)c = cal(I+1,J);//+arr[I][J];
  21.         if(J-1 >= 0 && arr[I][J-1] != -1)d = cal(I,J-1);//+arr[I][J];
  22.     }
  23.     return dp[I][J] = arr[I][J] + max(max(a,b),max(c,d));
  24. }
  25.  
  26. int main()
  27. {
  28.     //freopen("input.txt","r",stdin);
  29.     scanf("%d %d",&n,&m);
  30.     for(int i = 0 ; i < n ; i ++){
  31.         for(int j = 0 ; j < m ; j ++){
  32.             scanf("%d",&arr[i][j]);
  33.             dp[i][j] = -1;
  34.         }
  35.     }
  36.     int ans = 0;
  37.     for(int i = 0 ; i < n ; i ++){
  38.         for(int j = 0 ; j < m ; j ++){
  39.             ans = max(ans,cal(i,j));
  40.         }
  41.     }
  42.     printf("%d",ans);
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement