class Solution:
def maximumRobots(self, chargeTimes: List[int], runningCosts: List[int], budget: int) -> int:
ans = 0
left = 0
s = 0
q = deque()
for right, (charge, cost) in enumerate(zip(chargeTimes, runningCosts)):
while q and charge >= chargeTimes[q[-1]]:
q.pop()
q.append(right)
s += cost
while q and chargeTimes[q[0]] + s * (right - left + 1) > budget:
if q[0] == left:
q.popleft()
s -= runningCosts[left]
left += 1
ans = max(ans, right - left + 1)
return ans
12-10
299
10-06
437
10-06
421