Pagini recente » Cod sursa (job #2750117) | Cod sursa (job #2521932) | Cod sursa (job #3225568) | Cod sursa (job #2970664) | Cod sursa (job #1665929)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int Mn = 17;
int n, g;
int w[17];
int dp[(1 << Mn) + Mn];
long long sm;
int main()
{
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
for (int k = 0; k < 3; k++)
{
scanf("%d %d", &n, &g);
for (int i = 0; i < n; i++)
scanf("%d", &w[i]);
for (int i = 1; i < (1 << n); i++)
{
sm = 0;
for (int j = 0; j < n; j++)
if (i & (1 << j))
sm += w[j];
if (sm <= g)
dp[i] = 1;
else
{
dp[i] = n;
for (int j = (i - 1) & i; j; j = (j - 1) & i)
if (dp[j] + dp[i ^ j] < dp[i])
dp[i] = dp[j] + dp[i ^ j];
}
}
printf("%d\n", dp[(1 << n) - 1]);
}
return 0;
}