Cod sursa(job #108514)

Utilizator ScrazyRobert Szasz Scrazy Data 22 noiembrie 2007 20:05:59
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define NMAX 900
#define mod 9901

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

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

    scanf("%d", &n);

    long i, j, k;

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

    long 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-1; ++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;
}