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