Minimum Number of Work Sessions to Finish the Tasks LeetCode solution in C++

1
// C++ Solution
2
class Solution {
3
public:
4
int minSessions(vector<int> &tasks, int sessionTime) {
5
const int N = tasks.size();
6
const int INF = 1e9;
7
vector<pair<int, int>> dp(1 << N, {INF, INF});
8
dp[0] = {0, INF};
9
for (int mask = 1; mask < (1 << N); ++mask) {
10
pair<int, int> best = {INF, INF};
11
for (int i = 0; i < N; ++i) {
12
if (mask & (1 << i)) {
13
pair<int, int> cur = dp[mask ^ (1 << i)];
14
if (cur.second + tasks[i] > sessionTime) {
15
cur = {cur.first + 1, tasks[i]};
16
} else
17
cur.second += tasks[i];
18
best = min(best, cur);
19
}
20
}
21
dp[mask] = best;
22
}
23
return dp[(1 << N) - 1].first;
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0