Advertisement
Guest User

Memoize

a guest
Nov 20th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define INF 1e9
  3.  
  4. using namespace std;
  5.  
  6. long long memo[300001] = {0};
  7.  
  8. long long solve(int n, int a, int b){
  9. // compute and return answer here
  10. if(n == 0)
  11. return a;
  12. if(n == 1)
  13. return b;
  14. long long ans = INF;
  15. if(memo[n] == 0)
  16. {
  17. ans = min(a + solve(n - 1, a, b), b + solve(n - 2, a, b));
  18. memo[n] = ans;
  19. }
  20.  
  21. return memo[n];
  22. }
  23.  
  24. int main() {
  25. int q, a, b, n;
  26. cin >> q >> a >> b;
  27. for(int i = 0; i < q; i++){
  28. // use scanf/printf to prevent TLE
  29. scanf("%d",&n);
  30. printf("%d\n",solve(n,a,b));
  31. }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement