Cod sursa(job #316591)

Utilizator savimSerban Andrei Stan savim Data 20 mai 2009 11:13:57
Problema Culori Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

#define MAX_N 260

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] == v[j] && v[j] == v[i + d])
						c[i][i + d] += c[i][j] * c[j][i + d];

				c[i][i + d] += c[i + 1][i + d - 1];
			}
	printf("%d\n", c[1][2 * n - 1]);
}

int main() {

    cit();
	solve();

	return 0;
}