Cod sursa(job #2776826)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 21 septembrie 2021 12:20:49
Problema Culori Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

#define MOD 9901

int n;
int a[1024];
int c[1024][1024];

int main()
{
  std::ifstream in("culori.in");
  std::ofstream out("culori.out");

  in >> n;
  for (int i = 1; i <= 2 * n - 1; ++i) in >> a[i];
  for (int len = 1; len <= 2 * n - 1; ++len) {
    for (int first = 1; first + len - 1 <= 2 * n - 1; ++first) {
      int last = first + len - 1;
      if (first == last) { c[first][last] = 1; continue; }
      if (a[first] != a[last]) { c[first][last] = 0; continue; }
      c[first][last] = c[first + 1][last - 1];
      for (int second = first + 2; second < last - 1; ++second) {
        if (a[first] != a[second]) continue;
        c[first][last] += c[first + 1][second - 1] * c[second + 1][last - 1];
        c[first][last] %= MOD;
      }
      std::cerr << "c[" << first << "][" << last << "] = " << c[first][last]
          << std::endl;
    }
  }

  out << c[1][n] << std::endl;

  return 0;
}