Pagini recente » Cod sursa (job #837964) | Cod sursa (job #1747645) | Cod sursa (job #738546) | Cod sursa (job #1381240) | Cod sursa (job #1732832)
#include <bits/stdc++.h>
#define maxN 18
using namespace std;
int n,i,g,T=3,k,mask,nrt,v[maxN];
int dp[maxN][(1<<17)+5];
int main()
{
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
while(T--)
{
scanf("%d %d",&n,&g);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
for(mask=1;mask<(1<<n);mask++)
for(nrt=0;nrt<=n;nrt++)
dp[nrt][mask]=-1;
for(nrt=1;nrt<=n;nrt++)
for(mask=1;mask<(1<<n);mask++)
for(i=0;i<n;i++)
if(mask&(1<<i))
{
if(dp[nrt-1][mask-(1<<i)]!=-1)
dp[nrt][mask]=max(g-v[i],dp[nrt][mask]);
else if(dp[nrt][mask-(1<<i)]>=v[i])
dp[nrt][mask]=max(dp[nrt][mask],dp[nrt][mask-(1<<i)]-v[i]);
}
nrt=1;
while(dp[nrt][(1<<n)-1]==-1)
nrt++;
printf("%d\n",nrt);
}
return 0;
}