ann8497

stock selling 3D dp

Jul 16th, 2019
1,009
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  5. #define endl "\n"
  6. #define int long long
  7.  
  8.  
  9. int dp[100][100][100];
  10.  
  11. int solve(int *a, int s, int e, int k){
  12.    
  13.   // base case
  14.   if(s>=e)return 0;
  15.   if(k == 0)return 0;
  16.   if(dp[s][e][k] != -1)return dp[s][e][k];
  17.   int ans = 0;
  18.  
  19.   for(int i = s; i<e; i++){
  20.      
  21.       for(int j = i+1; j<=e; j++){
  22.           int temp =0;
  23.          
  24.          
  25.           if(a[j]>a[i]){
  26.              temp += a[j] - a[i] + solve(a,j+1,e,k-1);
  27.           }
  28.            ans = max(ans,temp);
  29.       }
  30.      
  31.   }
  32.   return  dp[s][e][k] = ans;
  33. }
  34.  
  35. int32_t main(){
  36.   int t; cin>>t;
  37.   while(t--){
  38.     int k,n;
  39.     cin>>k>>n;
  40.    
  41.     int a[n];
  42.     for(int i =0; i<n; i++)cin>>a[i];
  43.     memset(dp, -1 , sizeof(dp));
  44.     cout<<solve(a,0,n-1,k)<<endl;
  45.   }
  46. return 0;
  47. }
Add Comment
Please, Sign In to add comment