Cod sursa(job #341272)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 17 august 2009 22:22:43
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
#include <string.h>
#define MMAX 600
#define P 9901
int c[MMAX], Q[MMAX][MMAX];
int i, j, k, p, M, N;

int main()
{
	freopen("culori.in", "r", stdin);
	freopen("culori.out", "w", stdout);
	scanf("%d",&N);
	M=2*N-1;
	for(i=1;i<=M;i++)
		scanf("%d",&c[i]);
	for(i=1;i<=M;i++)
		Q[i][i]=1;
	for(k=2;k<=M;k++)
		for(i=1;i<=M-k+1;i++)
		{
			j=i+k-1;
			if(k%2==0 || c[i]!=c[j])
			{
				Q[i][j]=0;
				continue;
			}
			Q[i][j]=0;
			for(p=i;p<j;p+=2)
				if(c[p]==c[i])
					Q[i][j]=(Q[i][j]+Q[i][p]*Q[p+1][j-1])%P;
		}
	printf("%d\n",Q[1][M]);
	return 0;
}