Pagini recente » Cod sursa (job #273986) | Cod sursa (job #1402219) | Cod sursa (job #307274) | Cod sursa (job #1222019) | Cod sursa (job #2157387)
#include <bits/stdc++.h>
using namespace std;
pair <int, int> dp[1 << 18];
int v[20];
void test()
{
int n, g;
cin >> n >> g;
for (int i(0); i < n; i++)
cin >> v[i];
for (int i(1); i < (1 << n); i++)
dp[i] = { 1e9, 1e9 };
for (int i(0); i < (1 << n); i++) {
for (int bit(0); bit < n; bit++) {
if (i & (1 << bit))
continue;
pair <int, int> nou = { dp[i].first, dp[i].second + v[bit] };
if (1ll * dp[i].second + v[bit] >= g)
nou = { dp[i].first + 1, 1ll * dp[i].second + v[bit] - g };
dp[i + (1 << bit)] = min(dp[i + (1 << bit)], nou);
}
}
if (dp[(1 << n) - 1].second)
dp[(1 << n) - 1].first++;
cout << dp[(1 << n) - 1].first << '\n';
}
int main()
{
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
test(); test(); test();
return 0;
}