Cod sursa(job #19023)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 18 februarie 2007 17:46:54
Problema Culori Scor 4
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <string.h>

#define MAXN 515
#define MOD 9901 

int N, seq[MAXN];
int nr[MAXN][MAXN];

int get( int l, int r )
{
	if (nr[l][r] != -1)
		return nr[l][r];

	if (seq[l] != seq[r])
		return nr[l][r] = 0;

	if (l == r)
		return nr[l][r] = 1;

	nr[l][r] = get(l + 1, r - 1);
	
	int i;
	for (i = l + 1; i < r - 1; i++)
		if (seq[i] == seq[l])
		{
			nr[l][r] += get(l + 1, i - 1) * get(i + 1, r - 1);
			nr[l][r] %= MOD;
		}
	return nr[l][r];
}

int main()
{
	freopen("culori.in", "rt", stdin);
	freopen("culori.out", "wt", stdout);
	scanf("%d", &N);
	int i;
	for (i = 0; i < N + N - 1; i++)
		scanf("%d", seq + i);
	
	memset( nr, -1, sizeof(nr) );

	printf("%d\n", get(0, N + N - 2));

	return 0;
}