Leetcode 2012 Solution
This article provides solution to leetcode question 2012 (process-tasks-using-servers)
Access this page by simply typing in "lcs 2012" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/process-tasks-using-servers
Solution
class Solution:
def assignTasks(self, servers: List[int], tasks: List[int]) -> List[int]:
pending_servers = []
active_servers = []
for i, weight in enumerate(servers):
heapq.heappush(active_servers, (weight, i))
t = 0
i = 0
ans = [0] * len(tasks)
while i < len(tasks):
while pending_servers and pending_servers[0][0] <= t:
_, weight, server_id = heapq.heappop(pending_servers)
heapq.heappush(active_servers, (weight, server_id))
while active_servers and i <= t and i < len(tasks):
weight, server_id = heapq.heappop(active_servers)
ans[i] = server_id
heapq.heappush(pending_servers, (t + tasks[i], weight, server_id))
i += 1
if not active_servers:
t = pending_servers[0][0]
else:
t += 1
return ans