Naxocist

eraser

Apr 29th, 2023 (edited)
644
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.64 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define INF 2e18
  4.  
  5. using ll = long long;
  6. ll pro[40];
  7.  
  8. int main() {
  9.  
  10.     ll n, k, c; scanf("%lld%lld%lld", &n, &k, &c);
  11.  
  12.     pro[0] = c;
  13.     for(int i=1;i<=40; ++i) pro[i] = INF;
  14.     int mx = 0;
  15.     while(k--){
  16.         int a, b; scanf("%d%d", &a,&b);
  17.         pro[a] = min(pro[a], (ll)b);
  18.         mx = max(mx, a);
  19.     }
  20.  
  21.     for(int i=1; i<=mx; ++i) {
  22.         ll x = 2;
  23.         for(int j=i-1; j>=0; --j, x *= 2) {
  24.             pro[i] = min(pro[i], pro[j]*x);
  25.         }
  26.     }
  27.     ll res = 0;
  28.     for(int i=mx; i>=0 && n; --i) {
  29.         ll k = (1 << i);
  30.         res += pro[i]*(n/k);
  31.         // printf("%d\n", n/k);
  32.         n -= k*(n/k);
  33.     }  
  34.  
  35.     printf("%lld", res);
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment