Cod sursa(job #1511884)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 27 octombrie 2015 11:42:58
Problema Culori Scor 24
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>

#define DIM 520
#define MOD 9901
using namespace std;

int N;
int D[DIM][DIM], V[DIM];

int getSol (int left, int right)
{
    if (V[left] != V[right])
        return 0;

    if (D[left][right] != 0)
        return D[left][right];

    if (left == right)
        D[left][right] = 1;
    else
    {
        for (int middle = left + 1; middle < right; middle ++)
            if (V[left+1] == V[middle])
                D[left][right] = (D[left][right] + getSol(left + 1, middle) * getSol (middle + 1, right)) % MOD;
    }

    return D[left][right];
}

int main ()
{
    freopen ("culori.in" , "r", stdin );
    freopen ("culori.out", "w", stdout);

    scanf ("%d", &N);

    for (int i = 1; i <= 2 * N - 1; i ++)
        scanf ("%d", &V[i]);

    printf ("%d\n", getSol(1, 2*N-1));

    fclose (stdin );
    fclose (stdout);

    return 0;
}