Cod sursa(job #2155915)

Utilizator NeredesinI am not real Neredesin Data 8 martie 2018 11:48:48
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("culori.in");
ofstream out("culori.out");

const int NMAX = 256;
const int MOD = 9901;

int n;
int v[1 + 2 * NMAX];
int dp[1 + 2 * NMAX][1 + 2 * NMAX];

int main()
{
  in >> n;
  n = 2 * n - 1;

  for(int i = 1; i <= n; i++)
    in >> v[i];

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

  for(int l = 3; l <= n; l += 2) {
    for(int i = 1; i + l - 1 <= n; i++) {
      int j = i + l - 1;
      if(v[i] == v[j]) {
        for(int k = i + 1; k < j; k++) {
          dp[i][j] = (dp[i][j] + dp[i + 1][k] * dp[k + 1][j]) % MOD;
        }
      }
    }
  }

  out << dp[1][n] << '\n';

  in.close();
  out.close();
  return 0;
}