Pagini recente » Cod sursa (job #3277014) | Cod sursa (job #2584848) | Cod sursa (job #1958729) | Cod sursa (job #240109) | Cod sursa (job #17038)
Cod sursa(job #17038)
#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])
{
FOR(i, b + 2, e) if (a[b] == a[i])
(ok[b][e] += ok[b + 1][i - 1] * ok[i][e]) %= MODULO;
}
printf("%d\n", ok[0][2 * N - 2]);
return 0;
}