1
var maxTaskAssign = function (tasks, workers, pills, strength) {2
workers.sort((b, a) => b - a);3
tasks.sort((b, a) => b - a);6
rTasks = Math.min(tasks.length, workers.length) - 1;8
while (lTasks < rTasks) {9
const midTasks = (lTasks + rTasks + 1) >> 1;13
let w = workers.length - 1, freePills = pills, queue = [];17
if (queue[0] >= tasks[t]) {19
} else if (workers[w] >= tasks[t]) {21
} else if (freePills > 0) {22
while (w >= 0 && workers[w] + strength >= tasks[t])23
queue.push(workers[w--]);25
if (queue.length == 0) break;26
queue.pop(), freePills--;29
t == -1 ? (lTasks = midTasks) : (rTasks = midTasks - 1);