Pagini recente » Cod sursa (job #331830) | Cod sursa (job #1264386) | Cod sursa (job #55743) | Cod sursa (job #597947) | Cod sursa (job #1520216)
#include <bits/stdc++.h>
using namespace std;
const int inf = 1000000000;
const int nmax = 17;
int tests , n , g , i , j , k;
int sum[1 << nmax] , dp[1 << nmax];
int a[nmax];
int main()
{
freopen("zebughil.in" , "r" , stdin);
freopen("zebughil.out" , "w" , stdout);
for (tests = 3 ; tests ; --tests)
{
scanf("%d" , &n);
scanf("%d" , &g);
for (i = 0 ; i < n ; ++i)
scanf("%d" , &a[i]);
for (i = 0 ; i < (1 << n) ; ++i)
{
sum[i] = 0;
for (j = 0 ; j < n ; ++j)
if ((1 << j) & i) sum[i] += a[j];
}
dp[0] = 0;
for (i = 1 ; i < (1 << n) ; ++i)
{
for (j = 0 ; (1 << j) <= i ; ++j);
j -= 1;
dp[i] = inf;
for (k = i ; k & (1 << j) ; k = (k - 1) & i)
{
if (sum[k] > g) continue;
dp[i] = min(dp[i] , dp[i - k] + 1);
}
}
printf("%d\n" , dp[(1 << n) - 1]);
}
return 0;
}