Pagini recente » Cod sursa (job #849673) | Cod sursa (job #2163100) | Cod sursa (job #1879107) | Cod sursa (job #1863027) | Cod sursa (job #2776826)
#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;
}