Skip to content

Commit b33939c

Browse files
authored
Update 1882-process-tasks-using-servers.js
1 parent 2d52519 commit b33939c

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

1882-process-tasks-using-servers.js

+35
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
1+
/**
2+
* @param {number[]} servers
3+
* @param {number[]} tasks
4+
* @return {number[]}
5+
*/
6+
const assignTasks = function(servers, tasks) {
7+
const freePQ = new PriorityQueue((a, b) => a.w === b.w ? a.i < b.i : a.w < b.w)
8+
const runningPQ = new PriorityQueue((a, b) => a.e === b.e ? (a.w === b.w ? a.i < b.i : a.w < b.w) : a.e < b.e)
9+
const m = servers.length, n = tasks.length
10+
for(let i = 0; i < m; i++) freePQ.push({w: servers[i], i, e: 0})
11+
const res = []
12+
for(let i = 0; i < n; i++) {
13+
const cur = tasks[i]
14+
while(!runningPQ.isEmpty() && runningPQ.peek().e <= i) {
15+
const tmp = runningPQ.pop()
16+
tmp.e = i
17+
freePQ.push(tmp)
18+
}
19+
if(freePQ.isEmpty()) {
20+
const tmp = runningPQ.pop()
21+
res[i] = tmp.i
22+
tmp.e += cur
23+
runningPQ.push(tmp)
24+
} else {
25+
const tmp = freePQ.pop()
26+
res[i] = tmp.i
27+
tmp.e = i + cur
28+
runningPQ.push(tmp)
29+
}
30+
}
31+
return res
32+
};
33+
34+
// another
35+
136
/**
237
* @param {number[]} servers
338
* @param {number[]} tasks

0 commit comments

Comments
 (0)