Cod sursa(job #467244)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 28 iunie 2010 13:28:53
Problema Pod Scor 5
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1.02 kb
#include <cstdio>
#include <ctime>
#include <stdlib.h>
#define mod 9901
#define kpart 50
#define NMAX 1005
int n, m, k, a, cnt,i;
int res, dp[NMAX],j, A;
using namespace std;

int main ()
{
	freopen ("pod.in", "r", stdin);
	freopen ("pod.out", "w", stdout);
	scanf ("%d%d%d\n", &n, &m, &k);
	for (i = 1; i <= m; i++) 
	{
		scanf ("%d", &A);
		if (A == n)
		{
			printf ("0\n");
			return 0;
		}
	}
	int CNT = 1;
	dp[0] = 1; int pas = 1, past = 0;
	if (m == 0)
	{
		while (pas <= n)
		{	
			//int aux = pas;
			for (i = CNT; i <= kpart && pas <= n; i++)
			{	
				++pas;
				dp[i] = dp[i - 1];
				if (pas - k >= 0 && k != 1)
					dp[i] = (dp[i - 1] + dp[i - k]) % mod;
//				printf ("%d ", dp[i]);
			}
//			printf ("%d\n", pas);
			if (i <= kpart)
				past = i - 1;
			else past = kpart;
			if (pas > n) break;
			CNT = 0;
			//printf ("%d\n", past);
			for (i = kpart - k; i <= kpart; i++)
				dp[CNT++] = dp[i];
		}
	printf ("%d\n", dp[past] % mod);
	return 0;
	}
	srand (time (NULL));
	int x = rand () % mod;
	printf ("%d\n", x);
	return 0;
}