3
public int maxTaskAssign(int[] tasks, int[] workers, int pills, int strength) {8
int end = Math.min(tasks.length, workers.length) - 1;11
int mid = (st + end) / 2;12
if (isPossible(tasks, workers, pills, strength, mid)) {14
ans = Math.max(ans, mid + 1);22
boolean isPossibleToComplete(int[] tasks, int[] workers, int pills, int strength, int mid) {23
int n = workers.length;24
TreeMap<Integer, Integer> map = new TreeMap<>();26
for (int i = n - 1, count = 0; count <= mid && i >= 0; i--, count++) {27
map.merge(workers[i], 1, (a, b) -> a + b);31
for (int i = mid; i >= 0; i--) {33
Integer kv = map.ceilingKey(val);38
int newStrg = val - strength;39
Integer newKv = map.ceilingKey(newStrg);41
updateMap(map, newKv);54
void updateMap(TreeMap<Integer, Integer> map, int key) {55
int vl = map.get(key);