1
var busiestServers = function (k, arrival, load) {3
let pq = new MinPriorityQueue({ compare: (a, b) => a[1] - b[1] });4
let availableServers = new Set(new Array(k).fill(0).map((_, index) => index));6
for (let i = 0; i < arrival.length; i++) {8
let end = arrival[i] + load[i];11
while (pq.front()?.[1] <= arrival[i]) {12
const [server] = pq.dequeue();13
availableServers.add(server);17
// drop if no available server18
if (availableServers.size === 0) continue;20
// find the next avaiable sever21
while (!availableServers.has(server)) {23
if (server === k + 1) {29
if (!loadMap[server]) {35
availableServers.delete(server);36
pq.enqueue([server, end]);40
let sorted = Object.entries(loadMap).sort((a, b) => b[1] - a[1]);41
let max = sorted[0][1];43
while (sorted[i]?.[1] === max) {44
res.push(+sorted[i++][0]);