Advertisement
Ritam_C

Children Holiday

Dec 23rd, 2021
831
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. using namespace std;
  4.  
  5. ll m, n; vector<ll> ans;
  6.  
  7. struct Node {
  8.     ll t, z, y;
  9. };
  10.  
  11. vector<Node> v;
  12.  
  13. bool good(ll x) {
  14.     ll c = 0;
  15.     for(Node a : v) {
  16.         ll k = a.t*a.z+a.y;
  17.         ll temp = a.z*(x/k)+min(a.z, (x%k)/a.t);
  18.         c += temp;
  19.     }
  20.     return c >= m;
  21. }
  22.  
  23. int main() {
  24.     ios_base::sync_with_stdio(false);
  25.     cin.tie(nullptr); cout.tie(nullptr);
  26.     cin >> m >> n; v.resize(n); ans.assign(n, 0);
  27.     for(Node& a : v) cin >> a.t >> a.z >> a.y;
  28.     ll l = 0, r = 1e9, opt = 1e9;
  29.     while(l <= r) {
  30.         ll x = l+(r-l)/2;
  31.         if(good(x)) {
  32.             for(int i = 0; i < n; i++) {
  33.                 Node a = v[i];
  34.                 ll k = a.t*a.z+a.y;
  35.                 ll temp = a.z*(x/k)+min(a.z, (x%k)/a.t);
  36.                 ans[i] = temp;
  37.             }
  38.             r = x-1; opt = x;
  39.         } else {
  40.             l = x+1;
  41.         }
  42.     }
  43.     cout << opt << "\n";
  44.     for(ll& i : ans) {
  45.         i = min(m, i);
  46.         m -= i;
  47.     }
  48.     for(int i : ans) cout << i << " ";
  49.     return 0;
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement