Advertisement
Guest User

Monkey Banana Problem

a guest
Sep 4th, 2014
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.95 KB | None | 0 0
  1. //Bismillahir Rahmanir Rahim
  2. /******Harun Or Rashid******/
  3. /***********Template Starts Here***********/
  4. #include<iostream>
  5. #include<cstdio>
  6. #include<cstring>
  7. #include<cmath>
  8. #include<cctype>
  9. #include<cstdlib>
  10. #include<cassert>
  11. #include<string>
  12. #include<vector>
  13. #include<set>
  14. #include<stack>
  15. #include<queue>
  16. #include<map>
  17. #include<algorithm>
  18. using namespace std;
  19.  
  20. #define MEM(a,b) memset(a,b,sizeof(a))
  21. #define CLR(a) memset(a,0,sizeof(a))
  22. #define MAX(a,b) ((a)>(b)?(a):(b))
  23. #define MIN(a,b) ((a)>(b)?(b):(a))
  24. #define ABS(a) ((a)>0? (a):(-(a)))
  25. #define SQ(a) ((a)*(a))
  26. #define SZ(a) (int)a.size()
  27. #define FORN(i,n) for(i=1;i<=n;i++)
  28. #define FORAB(i,a,b) for(i=a;i<=b;i++)
  29. #define ALL(V) V.begin(),V.end()
  30. #define pb(a) push_back(a)
  31. #define pr(a) cout<<a<<endl
  32. #define SQR(a) ((a)*(a))
  33. #define pf printf
  34. #define sf scanf
  35. #define swap(a,b) (a ^= b, b ^= a, a ^= b)
  36. #define PI acos(-1)
  37. #define x first
  38. #define y second
  39. #define eps 1e-7
  40.  
  41. typedef int D;
  42. typedef long long int LLD;
  43. typedef unsigned long long int LLU;
  44. typedef vector<D> VI;
  45. typedef set<D> SI;
  46. typedef vector<D>::iterator Viti;
  47.  
  48. /***********Template Ends Here***********/
  49. int n,dp[100][100];
  50. void init()
  51. {
  52.     memset(dp,0,sizeof dp);
  53. }
  54. void takeInput()
  55. {
  56.     int i,j;
  57.     for(i=1; i<=n; i++)
  58.         for(j=1; j<=i; j++)
  59.             scanf("%d",&dp[i][j]);
  60.     for(i=1; i<n; i++)
  61.         for(j=1; j<=n-i; j++)
  62.             scanf("%d",&dp[n+i][j]);
  63. }
  64. int solve()
  65. {
  66.     int i,j;
  67.     for(i=1; i<=n; i++)
  68.         for(j=1; j<=i; j++)
  69.             dp[i][j]+=MAX(dp[i-1][j-1],dp[i-1][j]);
  70.     for(i=1; i<n; i++)
  71.         for(j=1; j<=n-i; j++)
  72.             dp[n+i][j]+=MAX(dp[n+i-1][j],dp[n+i-1][j+1]);
  73.     return dp[n+n-1][1];
  74. }
  75. int main()
  76. {
  77.     int T,i,answer;
  78.     scanf("%d",&T);
  79.     for(i=1; i<=T; i++)
  80.     {
  81.         scanf("%d",&n);
  82.         init();
  83.         takeInput();
  84.         answer=solve();
  85.         printf("Case %d: %d\n",i,answer);
  86.     }
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement