1
var getOrder = function (tasks) {
2
var n = tasks.length;
3
tasks = tasks.map((t, i) => [...t, i]);
4
tasks.sort((a, b) => {
5
if (a[0] === b[0]) {
6
return a[2] - b[2];
7
}
8
return a[0] - b[0];
9
}); // sort by queue time
10
var q = [];
11
var time = tasks[0][0];
12
var ans = [];
13
var enqIndex = 0;
14
while (ans.length < n) {
15
if (q.length === 0 && time < tasks[enqIndex][0]) {
16
time = tasks[enqIndex][0];
17
}
18
// enqueue
19
var curSize = q.length;
20
while (enqIndex < tasks.length && tasks[enqIndex][0] <= time) {
21
q.push(tasks[enqIndex]);
22
enqIndex++;
23
}
24
// sort when needed
25
if (curSize < q.length) {
26
// hack way to fix TLE to mock PQ
27
if (q.length > 0) {
28
q.sort((a, b) => {
29
if (a[1] === b[1]) {
30
return a[2] - b[2];
31
}
32
return a[1] - b[1];
33
});
34
}
35
}
36
// execute first task
37
var t = q.shift();
38
ans.push(t[2]);
39
time += t[1];
40
}
41
return ans;
42
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0