Pagini recente » Rating cavasi eduard (handicapatu) | Cod sursa (job #2887096) | Cod sursa (job #1161167) | Cod sursa (job #3145313) | Cod sursa (job #21115)
Cod sursa(job #21115)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>
#define FOR(i, a, b) for (i = (a); i <= (b); i ++)
#define NMAX 512
#define MODULO 9901
int a[NMAX];
int ok[NMAX][NMAX];
int N, i, l, b, e;
int main(void)
{
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
scanf("%d", &N);
FOR(i, 0, 2 * N - 2)
assert(scanf("%d", &a[i]) != EOF);
memset(ok, 0, sizeof(ok));
FOR(i, 0, 2 * N - 2) ok[i][i] = 1;
FOR(i, 0, 2 * N - 4) if (a[i] == a[i + 2]) ok[i][i + 2] = 1;
FOR(l, 3, 2 * N - 2)
FOR(b, 0, 2 * N - 2 - l)
if (a[b] == a[e = b + l])
{
register int *x = &(ok[b + 1][b]), *y = &(ok[b + 1][e]);
FOR(i, b + 2, e)
{
++ x, y += NMAX;
if (a[b] == a[i])
(ok[b][e] += (*x) * (*y)) %= MODULO;
}
}
printf("%d\n", ok[0][2 * N - 2]);
return 0;
}