Pagini recente » Cod sursa (job #1049984) | Cod sursa (job #2018718) | Cod sursa (job #2078482) | Cod sursa (job #2584940) | Cod sursa (job #1723943)
#include<cstdio>
#define MAXN 20
#define MAXEXP 140010
using namespace std;
int v[MAXN];
int dp[MAXN][MAXEXP];
int maximum(int a,int b){
if(a<b)
return b;
return a;
}
int main(){
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
int test,n,g,i,j,k;
for(test=1;test<=3;test++){
scanf("%d%d",&n,&g);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
for(i=0;i<=n;i++)
for(j=1;j<(1<<n);j++)
dp[i][j]=-1;
for(k=1;k<=n;k++)
for(i=1;i<(1<<n);i++)
for(j=0;j<n;j++)
if(i&(1<<j))
if(dp[k-1][i^(1<<j)]!=-1)
dp[k][i]=maximum(dp[k][i],g-v[j]);
else
if(dp[k][i^(1<<j)]>=v[j])
dp[k][i]=maximum(dp[k][i],dp[k][i^(1<<j)]-v[j]);
k=1;
i=(1<<n)-1;
while(dp[k][i]==-1)
k++;
printf("%d\n",k);
}
return 0;
}