Cod sursa(job #316599)

Utilizator savimSerban Andrei Stan savim Data 20 mai 2009 11:26:05
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

#define MAX_N 520

int n, i, d, j;
int v[MAX_N];
int c[MAX_N][MAX_N];

void cit() {
	freopen("culori.in", "r", stdin);
	freopen("culori.out", "w", stdout);

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

void solve() {
	for (i = 1; i <= 2 * n - 1; i++)
		c[i][i] = 1;    

	for (d = 1; d <= 2 * n - 1; d++)
		for (i = 1; i + d <= 2 * n - 1; i++) 
			if (v[i] == v[i + d] && d % 2 == 0) {
				for (j = i + 1; j < i + d; j++)
					if (v[i + 1] == v[j] && v[j + 1] == v[i + d])
						c[i][i + d] = (c[i][i + d] + c[i + 1][j] * c[j + 1][i + d]) % 9901;
			}
	printf("%d\n", c[1][2 * n - 1]);
}

int main() {

    cit();
	solve();

	return 0;
}