编辑代码

const rl = require("readline").createInterface({ input: process.stdin });
const iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
  const arr = (await readline())
    .split(" ")
    .map(Number)
    .sort((a, b) => b - a);
  const n = Number(await readline());
  let sum = arr.reduce((a, b) => a + b);
  let left = Math.max(...arr),
    right = sum;

  const createWorkers = () => Array.from({ length: n }, () => 0);

  const backtrack = (val, workers, idx) => {
    if (idx >= arr.length) return true;

    for (let i = 0; i < workers.length; i++) {
      if (workers[i] + arr[idx] <= val) {
        workers[i] += arr[idx];
        if (backtrack(val, workers, idx + 1)) return true;
        workers[i] -= arr[idx];
      }
    }
    return false;
  };

  while (left <= right) {
    const mid = (left + right) >> 1;
    if (backtrack(mid, createWorkers(), 0)) {
      right = mid - 1;
    } else {
      left = mid + 1;
    }
  }

  console.log(left);
})();