Cod sursa(job #18995)

Utilizator astronomyAirinei Adrian astronomy Data 18 februarie 2007 16:49:37
Problema Culori Scor 76
Compilator c Status done
Runda Arhiva de probleme Marime 0.76 kb
#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;
}