lelouche29

marathon_dp_ Samsung

Sep 9th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5.  
  6. int dp[1000][1000];
  7.  
  8. struct race{
  9.     int time_taken;
  10.     int energy;
  11. }speeds[5];
  12.  
  13. int minTime(int distance_left, int energy_left){
  14.     if(distance_left==0) return 0;
  15.  
  16.     if(dp[distance_left][energy_left]!=99999) return dp[distance_left][energy_left];
  17.  
  18.     int ans= 9999999;
  19.     for(int i=0; i<5; i++){
  20.        if(energy_left >= speeds[i].energy){
  21.             int q = speeds[i].time_taken  + minTime(distance_left - 1, energy_left - speeds[i].energy);
  22.             ans=min(ans,q);
  23.        }
  24.    }
  25.  
  26.    return dp[distance_left][energy_left]=ans;
  27. }
  28.  
  29. int main() {
  30.     int t=1;
  31.     // cin>>t;
  32.     while(t--){
  33.         int total_energy;
  34.         int distance;
  35.         cin>>total_energy>>distance;
  36.  
  37.         for(int i=0; i<5; i++)
  38.             cin >> speeds[i].time_taken >> speeds[i].energy;
  39.  
  40.        
  41.         for(int i=0; i<1000; i++){
  42.             for(int j=0; j<1000; j++){
  43.                 dp[i][j]=99999;
  44.             }
  45.         }
  46.  
  47.         int ans= minTime(distance,total_energy);
  48.         cout<<ans<<endl;
  49.     }
  50. }
  51.  
  52. // test case
  53. /*
  54. 600 40
  55. 191 20        
  56. 198 16        
  57. 216 14        
  58. 221 13        
  59. 233 12        
  60. */
Add Comment
Please, Sign In to add comment