Cod sursa(job #19402)

Utilizator vlad_popaVlad Popa vlad_popa Data 19 februarie 2007 14:23:19
Problema Culori Scor 48
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>

#define NMAX 657
#define FIN "culori.in"
#define FOUT "culori.out"

int N, v[NMAX], s[NMAX][NMAX];

int max (int x, int y)
{
  if (x > y)
    return x;
  return y;
}

int
 main ()
{
  freopen (FIN, "rt", stdin);
  freopen (FOUT, "wt", stdout);

  scanf ("%d", &N);
  for (int i = 1; i <= 2*N - 1; ++ i)
    scanf ("%d", &v[i]);
  for (int i = 1; i <= 2*N - 1; ++ i)
    s[i][i] = 1;
  for (int i = 2*N - 2; i >= 1; -- i)
    for (int j = i + 1; j <= 2*N - 1; ++ j)
     {
       if (v[i] == v[j])
         for (int k = i + 1; k < j; ++ k)
           if (v[i+1] == v[k])
             s[i][j] += s[i+1][k] * s[k+1][j];
       s[i][j] %= 9901;
     }
  printf ("%d\n", s[1][2*N - 1] % 9901);
  return 0;
}