Pagini recente » Cod sursa (job #1219515) | Cod sursa (job #2560413) | Cod sursa (job #1659975) | Cod sursa (job #1449319) | Cod sursa (job #18555)
Cod sursa(job #18555)
#include<stdio.h>
#include<string.h>
#define NMAX 512
#define Q 9901
void read();
int N, A[NMAX], V[NMAX][NMAX], prev[NMAX];
int main()
{
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
read();
return 0;
}
void read()
{
int i, j, x;
scanf("%d", &N);
N = 2 * N - 1;
for(i = 0; i < N; i++)
scanf("%d", A + i);
memset(prev, -1, sizeof(prev));
for(i = 0; i < N; i++)
for(j = i - 1; j >= 0; j--)
if(A[j] == A[i])
{
prev[i] = j;
j = 0;
}
for(j = 0; j < N; j+= 2)
for(i = 0; i + j < N; i++)
{
if(!j)
{
V[i][i + j] = 1;
continue;
}
if(A[i] != A[i + j]) continue;
for(x = i + j - 1; x > i; x = prev[x])
V[i][i + j] += (V[i][x - 1] * V[x][i + j - 1]) % Q, V[i][i + j] %= Q;
}
printf("%d\n", V[0][N - 1]);
}