Cod sursa(job #467134)

Utilizator ursu-valiJerdea Florin ursu-vali Data 28 iunie 2010 12:03:57
Problema Pod Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1 kb
#include<stdio.h>
#define infile "pod.in"
#define outfile "pod.out"

long n,m,k;
long a[100000009];

void solve()
{
	long nr=0,ok,i;
	if(a[1]!=-1)
	{
		nr++;
		a[1]++;
	}
	if(a[k]!=-1)
	{
		nr++;
		a[k]++;
	}
	for(i=1;i<=n;i++)
	{
		if(a[i]>0)
		{
			ok=0;
			if((a[i+1]!=-1)&&(i+1<=n))
			{
				ok=1;
				a[i+1]++;
			}
			if((a[i+k]!=-1)&&(i+k<=n))
			{
				if(ok==1)
                {
                     nr+=a[i];
                     nr%=9901;
                }
				a[i+k]++;
			}
		}
	}
	nr%=9901;
	printf("%ld\n",nr);
}
void solvem()
{
	long poz=0,q=1,nr=0;
	while(poz+k<=n)
	{
		if(poz%k==0)
			q++;
		nr+=q;
		nr%=9901;
		poz++;
	}
	printf("%ld\n",nr);
}
void read()
{
	long i,x;
	scanf("%ld %ld %ld",&n,&m,&k);
	for(i=1;i<=m;i++)
	{
		scanf("%ld",&x);
		a[x]=-1;
	}
	if(m==0)
		solvem();
	else
		solve();
}
int main()
{
	freopen(infile,"r",stdin);
	freopen(outfile,"w",stdout);
	read();
	fclose(stdin);
	fclose(stdout);
	return 0;
}