Advertisement
zhukov000

Binary search childrens holiday

Nov 15th, 2019
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.71 KB | None | 0 0
  1. m, n = map(int, input().split())
  2. t, z, y = [0] * n, [0] * n, [0] * n
  3. for i in range(n):
  4.     t[i], z[i], y[i] = map(int, input().split())
  5.  
  6. def f(time, i):
  7.     d = z[i] * t[i] + y[i]
  8.     return z[i] * (time // d) + min(z[i], time % d // t[i])
  9.  
  10. left = 0
  11. right = ((m - 1) // z[0] + 1) * (t[0] * z[0] + y[0])
  12. while right - left > 1:
  13.     mid = (left + right) // 2
  14.     k = 0 # число шариков за время mid, которое надуют все n помощников
  15.     for i in range(n):
  16.         k += f(mid, i)
  17.     if k < m:
  18.         left = mid
  19.     else:
  20.         right = mid
  21.    
  22. print(right)
  23. rem = m
  24. for i in range(n):
  25.     d = f(right, i)
  26.     print( min(d, rem), end = " " )
  27.     rem -= d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement