fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n,q;
  6. cin>>n>>q;
  7. vector<int>deals;
  8. for(int i = 0; i<n; i++){
  9. int a; cin>>a; if(i>0) {deals.push_back(min(a, 2*deals[i-1]));}
  10. else{
  11. deals.push_back(a);
  12. }
  13.  
  14. }
  15. for(int i = 1; i<=q; i++){
  16. int price=0; //price = amount spent
  17. int x; cin>>x;
  18. int ans = INT_MAX;
  19. for(int j = n-1; j>=0; j--){
  20. int take = x/(pow(2,j));
  21. price+=take*deals[j];
  22. x-=take*(long long) pow(2,j);
  23. if(x>0){
  24. ans=min(ans, price+deals[j]);
  25. }
  26. else{
  27. ans=min(ans, price);
  28. }
  29. }
  30. cout<<ans<<endl;
  31. }
  32. return 0;
  33. }
Success #stdin #stdout 0s 5308KB
stdin
2 4
10 15
1
2
6
7
stdout
10
15
45
55