Pagini recente » Cod sursa (job #2027816) | Cod sursa (job #2204424) | Cod sursa (job #1973575) | Cod sursa (job #391525) | Cod sursa (job #1317756)
#include <cstdio>
#include <algorithm>
#define INF 2000000000
using namespace std;
int n,G,dp[1000000],s[1000000],g[100];
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];
}
int main()
{
int T,i,j;
freopen ("zebughil.in","r",stdin);
freopen ("zebughil.out","w",stdout);
for(T=1;T<=3;++T) /// aici
{
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;
for(j=1;j<=n;++j)
if((1<<(j-1))&i) break;
s[i]=s[(i&(i-1))]+g[j];
}
printf("%d\n", memo((1<<n)-1));
}
return 0;
}