Cod sursa(job #484142)

Utilizator MirceaTanaseMircea Tanase MirceaTanase Data 12 septembrie 2010 14:31:01
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <algorithm>
#include <stdio.h>

#define MAX 520
#define restRez 9901

using namespace std;

int n;
int nod[MAX];
int sol[MAX][MAX];

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

	scanf("%d\n", &n);

	n = 2 * n - 1;

	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &nod[i]);

		sol[i][i] = 1;
	}

	for (int l = 1; l <= n; l++)
		for (int i = 1; i + l - 1 <= n; i++)
		{
			int j = i + l - 1;
			if (nod[i] == nod[j])
				for (int k = i + 1; k <= j; k++)
					sol[i][j] = (sol[i][j] + sol[i + 1][k - 1] * sol[k][j]) % restRez;
		}

	printf("%d\n", sol[1][n]);

	fclose(stdin);
	fclose(stdout);
	return 0;
}