Advertisement
informaticage

Corsa Contro Il tempo bottom up unoptimized

Jul 19th, 2023
709
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <cstdint>
  5. #include <cstdio>
  6. #include <climits>
  7.  
  8. using namespace std;
  9.  
  10. int main() {
  11.     freopen("input.txt", "r", stdin);
  12.     freopen("output.txt", "w", stdout);
  13.     int N, K;
  14.     cin >> N >> K;
  15.     vector<int> V(N), C(N);
  16.     for(int& v : V) cin >> v;
  17.     for(int& c : C) cin >> c;
  18.  
  19.     vector<vector<int>> dp(N+1, vector<int>(K+1, INT_MAX));
  20.     dp[0][0] = 0;
  21.  
  22.     for(int i = 0; i < N; ++i) {
  23.         for(int k = 0; k <= K; ++k) {
  24.             if(dp[i][k] == INT_MAX) continue;
  25.             // Situazione in cui il giocatore non salta il livello
  26.             int next_charge = min(K, k + C[i]);
  27.             dp[i+1][next_charge] = min(dp[i+1][next_charge], dp[i][k] + V[i]);
  28.             // Situazione in cui il giocatore salta il livello (se possibile)
  29.             if(k == K) dp[i+1][0] = min(dp[i+1][0], dp[i][k]);
  30.         }
  31.     }
  32.  
  33.     int min_time = *min_element(dp[N].begin(), dp[N].end());
  34.     cout << min_time << endl;
  35.  
  36.     return 0;
  37. }
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement