Pagini recente » Cod sursa (job #2856970) | Cod sursa (job #794751) | Cod sursa (job #1920448) | Cod sursa (job #2830703) | Cod sursa (job #1317759)
#include <cstdio>
#include <algorithm>
#define INF 2000000000
using namespace std;
int n,G,dp[1000000],s[1000000],g[100],lg[1000000];
inline int memo(int stare)
{
if(dp[stare]!=-1) return dp[stare];
int x;
dp[stare]=INF;
for(x=stare;x>0;x=((x-1)&stare))
if(s[x]<=G)
dp[stare]=min(dp[stare],1+memo(stare-x));
return dp[stare];
}
inline void Prec()
{
int i,j;
for(i=1,j=0;i<=1000000;i<<=1,++j) lg[i]=j;
}
int main()
{
int T,i,j;
freopen ("zebughil.in","r",stdin);
freopen ("zebughil.out","w",stdout);
Prec();
for(T=1;T<=3;++T)
{
scanf("%d%d", &n,&G);
for(i=1;i<=n;++i) scanf("%d", &g[i]);
for(i=1;i<(1<<n);++i)
{
dp[i]=-1;
j=lg[i-(i&(i-1))];
s[i]=s[(i&(i-1))]+g[j];
}
printf("%d\n", memo((1<<n)-1));
}
return 0;
}