Advertisement
Raslboyy

713

Dec 11th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string>
  5. #include <math.h>
  6. #include <climits>
  7.  
  8. #include <list>
  9. #include <map>
  10. #include <set>
  11. #include <queue>
  12. #include <unordered_map>
  13. #include <map>
  14.  
  15. //#include <chrono>
  16. //#include <fstream>
  17. //#include <bits/stdc++.h>
  18.  
  19. #define mp make_pair
  20. #define pb push_back
  21. #define eb emplace_back
  22. #define x first
  23. #define y second
  24. #define sz(x) (int)x.size()
  25. #define all(x) begin(x), end(x)
  26. #define rall(x) rbegin(x), rend(x)
  27. #define FOR(i,a,b) for (int i = (a); i < (b); i++)
  28. #define RFOR(i,b,a) for (int i = (b) - 1; i >= (a); i--)
  29.  
  30. using namespace std;
  31.  
  32. typedef unsigned long long ull;
  33. typedef long long ll;
  34. typedef long double ld;
  35. typedef pair<int, int> pi;
  36. typedef pair<ll, ll> pl;
  37. typedef vector<int> veci;
  38. typedef vector<bool> vecb;
  39. typedef vector<vector<int>> vvi;
  40. typedef vector<vector<bool>> vvb;
  41.  
  42. const int INF_I = 1e9;
  43. const ll INF_LL = 1e18;
  44.  
  45. struct card {
  46.     ll n_sec;
  47.     int cost;
  48. };
  49.  
  50. int main() {
  51.     /*ifstream cin("in.txt");
  52.     ofstream cout("out.txt");
  53.     auto start_time = chrono::high_resolution_clock::now();*/
  54.  
  55.     ios::sync_with_stdio(false);
  56.     cin.tie(0);
  57.     cout.tie(0);
  58.  
  59.    
  60.     int m;
  61.     cin >> m;
  62.     vector<card> vec(31);
  63.  
  64.     int pow = 1;
  65.     for (int i = 0; i < 31; i++) {
  66.         cin >> vec[i].n_sec;
  67.         if (i > 0)
  68.             vec[i].n_sec = max(vec[i].n_sec, vec[i - 1].n_sec * 2);
  69.         vec[i].cost = pow;
  70.         pow *= 2;
  71.     }
  72.  
  73.     int res = (m / vec[30].n_sec) * vec[30].cost;
  74.     m = (m + vec[30].n_sec) % vec[30].n_sec;
  75.  
  76.     vector<ll> sum(31);
  77.     sum[0] = vec[0].n_sec;
  78.     for (int i = 1; i < 31; i++)
  79.         sum[i] += sum[i - 1] + vec[i].n_sec;
  80.  
  81.     for (int i = 30; i >= 0 && m > 0; i--)
  82.         if (i == 0 || sum[i - 1] < m) {
  83.             res += vec[i].cost;
  84.             m -= vec[i].n_sec;
  85.         }
  86.  
  87.     cout << res << endl;
  88.    
  89.     /*auto end_time = chrono::high_resolution_clock::now();
  90.     chrono::duration<double> duration = end_time - start_time;
  91.     cout << duration.count() << "\n";
  92.     cin.close();
  93.     cout.close();*/
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement