Cod sursa(job #108468)

Utilizator ScrazyRobert Szasz Scrazy Data 22 noiembrie 2007 19:17:17
Problema Culori Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#define NMAX 300
#define mod 9901

int n;
long C[NMAX*2];
long A[NMAX][NMAX];

int main()
{
    freopen("culori.in","r",stdin);
    freopen("culori.out","w",stdout);

    scanf("%d", &n);

    int i, j, k;

    for (i=1; i<=2*n-1; ++i)
	scanf("%ld", &C[i]);

    int nr;

    for (i=1; i<=2*n-1; ++i) 
	A[i][i]=1;


    for (nr=3; nr<=2*n-1; nr+=2)
	for (i=1; i<=2*n-nr; ++i)
	{
	    j=i+nr-1;
	    if (j>2*n-1) continue;
	    if (C[i] != C[j]) continue;

	    for (k=i+1; k<j; ++k)
		if (C[i+1]==C[k])
		    A[i][j]=(A[i][j]+A[i+1][k]*A[k+1][j])%mod;
	} 

    printf("%ld", A[1][2*n-1]);

    fclose(stdin);
    fclose(stdout);

    return 0;
}