ann8497

marathon samsung

Sep 5th, 2019
1,360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. /*
  2. marathon question
  3. */
  4.  
  5. #include<bits/stdc++.h>
  6. using namespace std;
  7.  
  8. int d,e;
  9. int a[5][2];
  10. int dp[1000][1000]; // dp array of dist , energy
  11.  
  12. int solve(int d, int e){
  13.    
  14.     // base case
  15.     if(d == 0)return 0;
  16.    
  17.    if(dp[d][e] != 99999)return dp[d][e];
  18.    
  19.     // recursive case
  20.     int ans = INT_MAX - 100000;
  21.    
  22.     for(int i =0; i<5; i++){
  23.         if(e >= a[i][1]){
  24.            int temp = a[i][0] + solve(d-1, e - a[i][1]);
  25.            ans = min(ans,temp);
  26.         }
  27.        
  28.        
  29.     }
  30.    
  31.     return dp[d][e] = ans;
  32. }
  33.  
  34. int main(){
  35.    
  36.     cin>>d>>e;
  37.    
  38.     for(int i = 0; i<5; i++)
  39.     cin>>a[i][0]>>a[i][1]; // corresponds to time and energy
  40.    
  41.     for(int i = 0; i<1000; i++)for(int j =0; j<1000; j++)dp[i][j] = 99999;
  42.    
  43.      cout<<solve(d,e)<<endl;
  44.    
  45.     return 0;
  46. }
Add Comment
Please, Sign In to add comment