![]() |
VOOZH | about |
Given M servers that handle multiple requests having infinite computational capability and arrays arrivalTime[] and processTime[] of size N denoting the arrival time and load time of N requests in the following manner:
Considering that each server can handle only one request at a time, the task is to find the load on each server after all the incoming requests are processed given that load on each server is the number of requests it processes.
Examples:
Input: N = 4, M = 3, arrivalTime[] = {1, 3, 6, 8}, processTime[] = {1, 2, 2, 1}
Output:
1st Server -> 2
2nd Server -> 1
3rd Server -> 1
Explanation:
The first and fourth requests are assigned to the first server.
The second request is assigned to the second server and the third request is assigned to the third server.
Below is the transition table:
Request Number Arrival Time Load Time End Time Available Servers Demanded Server Assigned Server 0 1 1 2 0, 1, 2 0 0 1 3 2 5 0, 1, 2 1 1 2 6 2 8 0, 1, 2 2 2 3 8 1 9 0, 1, 2 1 1 Input: N = 4, M = 2, arrivalTime = {1, 2, 4, 6}, processTime = {7, 1, 4, 4}
Output:
1st Server -> 1
2nd Server -> 2
Explanation:
The first request is assigned to the first server and second request to the second server.
The third request is assigned to the second server. The demanded server for the third request is the first server but since, it is busy at the arrival time of the request,
So, the second server is assigned to it.
The fourth request is dropped as both servers are busy at the time of its arrival.
Below is the transition table:
Request Number Arrival Time Load Time End Time Available Servers Demanded Server Assigned Server 0 1 7 8 0, 1 0 0 1 2 1 3 1 1 1 2 4 4 8 1 0 1 3 6 4 10 - 1 -
Approach: The idea is to use a Minimum Priority Queue and a set. Priority queue keeps count of the busy servers and helps to release them as soon as they are free. Set is used to maintain the data of available servers to assign them to the incoming requests. Below are the steps:
Below is the implementation of the above approach:
1st Server -> 1. 2st Server -> 2.
Time Complexity: O(N*log M)
Auxiliary Space: O(M)