Pagini recente » Cod sursa (job #2055491) | Cod sursa (job #516588) | Cod sursa (job #436353) | Cod sursa (job #1441332) | Cod sursa (job #616520)
Cod sursa(job #616520)
#include<cstdio>
int n,sol[25],v[25],s,nr;
bool tr[515];
void afisare(int p)
{
int i;
for(i=1;i<=s;i++)
if(tr[i]==true)
nr++;
//printf("%d\n",nr);
return ;
}
void umplere_traista(int val)
{
int i;
for(i=0;i<=s-val;i++)
if(tr[i])
tr[i+val]=true;
return ;
}
void bkt(int p)
{
int i,j;
bool trc[515];
if(p>1)
afisare(p-1);
for(i=sol[p-1]+1;i<=n;i++)
{
sol[p]=i;
for(j=1;j<=s;j++)
trc[j]=tr[j];
umplere_traista(v[sol[p]]);
bkt(p+1);
for(j=1;j<=s;j++)
tr[j]=trc[j];
}
return ;
}
int main()
{
freopen("monezi.in","r",stdin);
freopen("monezi.out","w",stdout);
int i;
scanf("%d%d",&n,&s);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
tr[0]=true;
bkt(1);
printf("%d",nr);
return 0;
}