Pagini recente » Cod sursa (job #3214958) | Cod sursa (job #3200253) | Cod sursa (job #2210354) | Cod sursa (job #3287802) | Cod sursa (job #2949042)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
void solve() {
int n, g;
cin >> n >> g;
vector<int> w(n);
for (int i = 0; i < n; ++i) {
cin >> w[i];
}
vector<pair<int, long long>> dp(1 << n, {1e9, g});
dp[0] = {0, g};
for (int i = 0; i < (1 << n) - 1; ++i) {
for (int j = 0; j < n; ++j) {
if ((i & (1 << j)) == 0) {
if (dp[i].second + w[j] > g) {
dp[i | (1 << j)] = min(dp[i | (1 << j)], {dp[i].first + 1, w[j]});
} else {
dp[i | (1 << j)] = min(dp[i | (1 << j)], {dp[i].first, dp[i].second + w[j]});
}
}
}
}
cout << dp[(1 << n) - 1].first << "\n";
}
int main() {
for (int t = 0; t < 3; ++t) {
solve();
}
return 0;
}