Skip to content

Commit fd4a0bf

Browse files
committed
Runtime: 211 ms (Top 100.0%) | Memory: 57.90 MB (Top 100.0%)
1 parent 15f32c3 commit fd4a0bf

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Runtime: 211 ms (Top 100.0%) | Memory: 57.90 MB (Top 100.0%)
2+
3+
var maxTaskAssign = function(tasks, workers, pills, strength) {
4+
workers.sort((b, a) => b - a);
5+
tasks.sort((b, a) => b - a);
6+
7+
let lTasks = -1, rTasks = Math.min(tasks.length, workers.length) - 1;
8+
9+
while (lTasks < rTasks) {
10+
const midTasks = (lTasks + rTasks + 1) >> 1;
11+
let t = midTasks;
12+
13+
for (let w = workers.length - 1, freePills = pills, queue = []; t >= 0; t--) {
14+
if (queue[0] >= tasks[t]) {
15+
queue.shift();
16+
} else if (workers[w] >= tasks[t]) {
17+
w--;
18+
} else if (freePills > 0) {
19+
while (w >= 0 && workers[w] + strength >= tasks[t])
20+
queue.push(workers[w--]);
21+
22+
if (queue.length == 0) break;
23+
queue.pop(), freePills--;
24+
} else break;
25+
}
26+
t == -1 ? lTasks = midTasks : rTasks = midTasks - 1;
27+
}
28+
return lTasks + 1;
29+
};

0 commit comments

Comments
 (0)