Pagini recente » Cod sursa (job #1600331) | Cod sursa (job #2146649) | Cod sursa (job #1485464) | Cod sursa (job #771672) | Cod sursa (job #9455)
Cod sursa(job #9455)
#include <stdio.h>
int v[100],i,j,s[100],n,r=0,p=0,d,q,l,x,y,m=0;
void init(int k)
{v[k]=-1;
}
int valid(int k)
{int d=1,j,q;
for(i=1;i<k&&d;i++)
if(v[i]==1)
{q=1;
for(j=i+1;j<=k&&q;j++)
if(v[j]==1)
q=0;
if(q==0)
{j--;
if(s[j]==s[i])
return 0;
}
}
return 1;
}
int succesor(int k)
{if(v[k]<1)
{v[k]++;
return 1;
}
return 0;
}
int solutie(int k)
{
return k==n;}
void tipar(int k)
{int d=1,t=0,r;
for(i=1;i<=n;i++)
if(v[i]==1)
t++;
if(t>=x&&t<=y)
{for(i=1;i<n&&d;i++)
if(v[i]==1)
{q=1;
for(j=i+1;j<=n&&q;j++)
if(v[j]==1)
q=0;
if(q==0)
{j--;
if(j!=(i+1))
d=0;
}
}
if(d==1)
{m++;
}
}
}
void bt(int k)
{init(k);
while(succesor(k))
if(valid(k))
if(solutie(k))
tipar(k);
else
bt(k+1);
}
int main()
{FILE*fi,*fo;
fi=fopen("secv.in","r");
fo=fopen("secv.out","w");
fscanf(fi,"%d",&n);
fscanf(fi,"%d",&x);
fscanf(fi,"%d",&y);
for(i=1;i<=n;i++)
fscanf(fi,"%d",&s[i]);
bt(1);
fprintf(fo,"%d",m);
}