Pagini recente » Cod sursa (job #244032) | Cod sursa (job #2268040) | Cod sursa (job #3201712) | Cod sursa (job #1087306) | Cod sursa (job #2216806)
#include<stdio.h>
#include<map>
#define MAX_TERMS 4
#define MAXN 1024
FILE*fin,*fout;
void bkt(int level);
int N,L;
long long ans;
int v[MAXN+1];
int sol[MAX_TERMS+1];
int main()
{
fin=fopen("oite.in","r");
fout=fopen("oite.out","w");
fscanf(fin,"%d%d",&N,&L);
for(int i=1;i<=N;i++)
{
fscanf(fin,"%d",&v[i]);
}
///brut af
bkt(1);
fprintf(fout,"%lld",ans);
/*for(int i=1;i<=N;i++)
{
nr_mod[1][v[i]]=1;
}
for(int i=2;i<=MAX_TERMS;i++)
{
for(int j=1;j<=N;j++)
{
for(std::map<int,int>::iterator it=nr_mod[i-1].begin();it!=nr_mod[i-1].end();it++)
{
if(nr_mod[i].find(it->first+v[j])==nr_mod[i].end())
{
nr_mod[i][it->first+v[j]]=0;
}
printf("%d %d %d\n",it->first,it->second,v[j]);
nr_mod[i][it->first+v[j]]+=it->second;
}
}
}
fprintf(fout,"%d",nr_mod[MAX_TERMS][L]);*/
fclose(fin);
fclose(fout);
return 0;
}
void bkt(int level)
{
if(level==MAX_TERMS+1)
{
long long sum=0;
for(int i=1;i<=MAX_TERMS;i++)
{
sum+=v[sol[i]];
}
if(sum==L)
{
ans++;
}
}
else
{
for(int i=sol[level-1]+1;i<=N-MAX_TERMS+level;i++)
{
sol[level]=i;
bkt(level+1);
}
}
}