Skip to content

Commit 15cccd0

Browse files
authored
Create fair-distribution-of-cookies.cpp
1 parent bcad2d2 commit 15cccd0

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

C++/fair-distribution-of-cookies.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Time: O(k * 3^n)
2+
// Space: O(2^n)
3+
4+
// dp, submask enumeration
5+
class Solution {
6+
public:
7+
int distributeCookies(vector<int>& cookies, int k) {
8+
vector<int> total(1 << size(cookies));
9+
for (int mask = 0; mask < (1 << size(cookies)); ++mask) {
10+
for (int i = 0; i < size(cookies); ++i) {
11+
if (mask & (1 << i)) {
12+
total[mask] += cookies[i];
13+
}
14+
}
15+
}
16+
vector<vector<int>> dp(2, vector<int>(1 << size(cookies), numeric_limits<int>::max()));
17+
dp[0][0] = 0;
18+
for (int i = 0; i < k; ++i) {
19+
for (int mask = 0; mask < (1 << size(cookies)); ++mask) {
20+
for (int submask = mask; submask; submask = (submask - 1) & mask) {
21+
dp[(i + 1) % 2][mask] = min(dp[(i + 1) % 2][mask], max(total[submask], dp[i % 2][mask ^ submask]));
22+
}
23+
}
24+
}
25+
return dp[k % 2].back();
26+
}
27+
};

0 commit comments

Comments
 (0)