Cod sursa(job #467277)

Utilizator udrescu_cristiUdrescu Cristian udrescu_cristi Data 28 iunie 2010 13:45:27
Problema Pod Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 0.71 kb
#include<stdio.h>
#define ll long long

 ll n,m,k,a[1001],k1,nr,st[1000],x,i;
 
 int valid(int k)
 {
	 int i,t=1;
	if(st[k]>n||a[st[k]]!=0) t=0;
	if(st[1]!=1&&st[1]!=k1) t=0;
	for(i=1;i<=k&&t;i++)
		if(st[i]-st[i-1]!=1&&st[i]-st[i-1]!=k1) 
			t=0;
	return t;
 }
 void back(int k)
 {
	st[k]=st[k-1];
 while(st[k]<=n)
 {
    st[k]++;
   if(valid(k))
   {
    if(st[k]==n)
	{
		nr++;
	}
   else
    back(k+1);
   }
 }
 }
  
 int main()
{
	freopen("pod.in","r",stdin);
	freopen("pod.out","w",stdout);
	
 scanf("%lld%lld%lld\n",&n,&m,&k1);
 for(i=1;i<=m;i++)
	{
		scanf("%lld",&x);
		a[x]=1;
    }
 
 st[0]=st[1]=0;
 back(1);
 
printf("%lld\n",nr%9901); 

return 0;
 }