3
int minimumTimeRequired(vector<int> &jobs, int k) {5
for (int j : jobs) sum += j;6
sort(jobs.begin(), jobs.end(), greater<int>());7
int l = jobs[0], r = sum;9
int mid = (l + r) >> 1;10
vector<int> worker(k, 0);11
if (dfs(jobs, worker, 0, mid))18
bool dfs(vector<int> &jobs, vector<int> &worker, int step, int target) {19
if (step >= jobs.size()) return true;21
// assign cur to worker i22
for (int i = 0; i < worker.size(); i++) {23
if (worker[i] + cur <= target) {25
if (dfs(jobs, worker, step + 1, target)) return true;28
if (worker[i] == 0) break;