Cod sursa(job #18497)

Utilizator vlad_popaVlad Popa vlad_popa Data 18 februarie 2007 12:25:49
Problema Culori Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.67 kb
#include <stdio.h>

#define NMAX 257
#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 = 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 - 1; ++ k)
           s[i][j] += max(1, s[i][k] + s[k+1][j]);
       s[i][j] %= 9901;
     }
  printf ("%d\n", s[1][2*N - 1] % 9901);
  return 0;
}