Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- m, n = map(int, input().split())
- t, z, y = [0] * n, [0] * n, [0] * n
- for i in range(n):
- t[i], z[i], y[i] = map(int, input().split())
- def f(time, i):
- d = z[i] * t[i] + y[i]
- return z[i] * (time // d) + min(z[i], time % d // t[i])
- left = 0
- right = ((m - 1) // z[0] + 1) * (t[0] * z[0] + y[0])
- while right - left > 1:
- mid = (left + right) // 2
- k = 0 # число шариков за время mid, которое надуют все n помощников
- for i in range(n):
- k += f(mid, i)
- if k < m:
- left = mid
- else:
- right = mid
- print(right)
- rem = m
- for i in range(n):
- d = f(right, i)
- print( min(d, rem), end = " " )
- rem -= d
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement