How much work is still queued
Jobs arrive in batches and a single machine clears a fixed number per tick. Work that is not cleared this tick carries into the next.
- Each arrival adds its batch to the pending queue.
- Then the machine clears serviceRate of it — never more than what is pending.
- Each arrival is processed in sequence; return the queue left after the last tick.
- A service rate of zero or less clears nothing, so the sum of all arrivals is left.
queue_after(arrivals: list<int>, service_rate: int) → int
Where you start
def queue_after(arrivals: list[int], service_rate: int) -> int:
Worked examples
| Call | Result |
|---|---|
queue_after([5, 3, 2], 4) | 0 |
queue_after([10, 0, 5], 4) | 3 |
queue_after([3, 3, 3], 1) | 6 |
queue_after([10, 10], 0) | 20 |
Hint
For each arrival add it, then subtract the smaller of the queue and the rate.
Reference solution in Python
def queue_after(arrivals: list[int], service_rate: int) -> int:
pending = 0
for a in arrivals:
pending += a
pending -= min(pending, service_rate)
return pending