Cod sursa(job #18316)

Utilizator vlad_popaVlad Popa vlad_popa Data 18 februarie 2007 11:27:03
Problema Culori Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.63 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]);
  int i = 0;
  for (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]);
  printf ("%d\n", s[1][2*N - 1]);
  return 0;
}