Find Servers That Handled Most Number of Requests
You have k servers numbered from 0 to k - 1 that are being used to handle multiple requests simultaneously. Each server has infinite computational capacity but cannot handle more than one request at a time. The requests are assigned to servers according to the following algorithm:
- The
i^th(0-indexed) request arrives. - If all servers are busy, the request is dropped and not handled at all.
- If the
(i % k)^thserver is available, assign the request to that server. - Otherwise, assign the request to the next available server, wrapping around the list of servers and starting from
0if necessary. For example, if thei^thserver is busy, try to assign the request to the(i + 1)^thserver, then the(i + 2)^thserver, and so on.
You are given a strictly increasing array arrival of positive integers, where arrival[i] represents the arrival time of the i^th request, and another array load, where load[i] represents the load of the i^th request, meaning the time it takes to complete.
Your goal is to find the busiest server(s). A server is considered busiest if it handled the most number of requests successfully among all servers.
Return a list containing the IDs (0-indexed) of the busiest server(s). You may return the IDs in any order.
k = 3, arrival = [1,2,3,4,5], load = [5,2,3,3,3][1]k = 3, arrival = [1,2,3,4], load = [1,2,1,2][0]Constraints
- 1 <= k <= 10^5
- 1 <= arrival.length, load.length <= 10^5
- arrival.length == load.length
- 1 <= arrival[i], load[i] <= 10^9
- arrival is strictly increasing.