Cod sursa(job #18381)

Utilizator mockeBarca Cristian Mihai mocke Data 18 februarie 2007 11:50:49
Problema Culori Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 10-a Marime 0.77 kb
#include <stdio.h>
#define NMAX 550
#define MOD 9901

int A[NMAX][NMAX];
int C[NMAX];
int i, j, k, aux, N;

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

     scanf("%d", &N);

     N = 2 * N;

     for (i = 1; i < N; i++) scanf("%d", &C[i]);

     for (i = 1; i < N; i++) A[i][i] = 1;

     for (aux = 1; aux < N; aux++)
         for (i = 1; i < N - aux; i++)
             if (C[i] == C[i + aux])
             {
                    j = i + aux;

                    A[i][j] = A[i + 1][j - 1] % MOD;

                    for (k = i + 1; k < j; k++)
                        A[i][j] = (A[i][j] + A[i + 1][k - 1] * A[k + 1][j - 1]) % MOD;
             }

     printf("%d\n", A[1][N - 1]);

     return 0;
}