Pagini recente » Cod sursa (job #1687219) | Cod sursa (job #1641764) | Cod sursa (job #1721956) | Cod sursa (job #2169848) | Cod sursa (job #18995)
Cod sursa(job #18995)
#include <stdio.h>
#include <string.h>
#define MAXN 512
#define MOD 9901
int N, C[MAXN];
int A[MAXN][MAXN];
int solve(int i, int j)
{
int k, r = 0;
if(A[i][j] != -1)
return A[i][j];
r = 0;
for(k = i+2; k <= j; k++)
if(C[i] == C[k] && C[k] == C[j])
r += solve(i+1, k-1)*solve(k, j), r %= MOD;
return A[i][j] = r;
}
int main(void)
{
freopen("culori.in", "rt", stdin);
freopen("culori.out", "wt", stdout);
int i;
scanf("%d\n", &N);
for(i = 1; i <= 2*N-1; i++)
scanf("%d ", &C[i]);
memset(A, -1, sizeof(A));
for(i = 1; i <= 2*N-1; i++)
A[i][i] = 1;
printf("%d\n", solve(1, 2*N-1));
return 0;
}