Cod sursa(job #19627)

Utilizator m_dersidanDersidan Mihai m_dersidan Data 19 februarie 2007 20:03:22
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
# include <stdio.h>

# define  _fin  "culori.in"
# define  _fout "culori.out"

# define  maxn  600


int c[maxn], n;
int a[maxn][maxn];


void readf()
{
	freopen(_fin, "r", stdin);
	int i;
	
	for (scanf("%d", &n), i=1; i<=2*n-1; i++)
		 scanf("%d", c+i);
}

void solve()
{
	int i, j, d, k, m=2*n-1;
	
	for (i=1; i<=m; i++) a[i][i] = 1;
	
	for (d=1; d<m; d++)
		for (j=1; j+d<=m; j++)
			if ( c[j] == c[j+d] && (d+1)&1 )
			{
				for (k=j+1; k<j+d; k++)
					a[j][j+d] = ( a[j][j+d] + a[j+1][k] * a[k+1][j+d] ) % 9901;
			}
}

void writef()
{
	freopen(_fout, "w", stdout);
	
	printf("%d\n", a[1][2*n-1]);
}

int main()
{
	readf();
	solve();
	writef();
	
	return 0;
}