Cod sursa(job #524666)

Utilizator DraStiKDragos Oprica DraStiK Data 22 ianuarie 2011 15:54:53
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <algorithm>
using namespace std;

#define MOD 9901
#define DIM 260

int bst[DIM<<1][DIM<<1];
int v[DIM<<1];
int n;

void read ()
{
    int i;

    scanf ("%d",&n);
    n=(n<<1)-1;
    for (i=1; i<=n; ++i)
        scanf ("%d",&v[i]);
}

void solve ()
{
    int i,j,k,lg;

    for (i=1; i<=n; ++i)
        bst[i][i]=1;

    for (lg=1; lg<=n; ++lg)
        for (i=1; i+lg-1<=n; ++i)
        {
            j=i+lg-1;
            if (v[i]==v[j])
                for (k=i+1; k<=j; ++k)
                    bst[i][j]=(bst[i][j]+bst[i+1][k-1]*bst[k][j])%MOD;
        }

    printf ("%d",bst[1][n]);
}

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

    read ();
    solve ();

    return 0;
}