Pagini recente » Cod sursa (job #1168605) | Cod sursa (job #1462345) | Cod sursa (job #2649828) | Cod sursa (job #2352578) | Cod sursa (job #397058)
Cod sursa(job #397058)
#include<stdio.h>
int n,g,v[20];
int d[20][132000];
inline int max(int a, int b){return a>b?a:b;}
int main()
{
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
int i,j,k,cj,t=3,lim;
while(t--)
{
for(i=0;i<=19;i++)
for(j=0;j<=131900;j++)
d[i][j]=-1;
scanf("%d%d",&n,&g);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
lim=(1<<n)-1;
d[0][0]=0;
for(i=0;i<=n;i++)
for(j=0;j<=lim;j++)
{
if(d[i][j]==-1)
continue;
for(k=0;k<n;k++)
if(!(j&(1<<k)))
{
cj=j^(1<<k);
d[i+1][cj]=max(d[i+1][cj],g-v[k+1]);
d[i][cj]=max(d[i][cj],d[i][j]-v[k+1]);
}
}
for(i=1;i<=n;i++)
if(d[i][lim]!=-1)
break;
printf("%d\n",i);
}
return 0;
}