Pagini recente » Cod sursa (job #3252894) | Cod sursa (job #225923) | Cod sursa (job #2610971) | Cod sursa (job #143187) | Cod sursa (job #173594)
Cod sursa(job #173594)
#include <cstdio>
using namespace std;
#define FIN "culori.in"
#define FOUT "culori.out"
#define MAX_N 260
#define MOD 9901
int A[MAX_N << 1][MAX_N << 1];
int N;
int C[MAX_N << 1];
void solve ()
{
int i, j, k;
// initializare dinamica
for (i = 1; i <= (N << 1) - 1; ++i) A[i][i] = 1;
// procesare
for (i = (N << 1) - 1; i; --i)
for (j = i + 1; j <= (N << 1) - 1; ++j)
if (!((i + j) & 1) && C[i] == C[j])
{
for (k = i + 1; k < j; ++k)
if (C[i + 1] == C[k])
A[i][j] += (A[i + 1][k] * A[k + 1][j]), A[i][j] %= MOD;
}
/*
for (i = 1; i <= N*2 - 1; ++i)
{
for (j = 1; j <= N*2 - 1; ++j)
printf ("%d ", A[i][j]);
printf ("\n");
}*/
printf ("%d\n", (int) A[1][(N << 1) - 1] % MOD);
}
int main ()
{
freopen (FIN, "r", stdin);
freopen (FOUT, "w", stdout);
scanf ("%d", &N);
int i;
for (i = 1; i <= (N << 1) - 1; ++i) scanf ("%d", C + i);
solve ();
return 0;
}