Pagini recente » Istoria paginii runda/hmmmm/clasament | Istoria paginii runda/bidonel | Cod sursa (job #20129) | Istoria paginii runda/lk/clasament | Cod sursa (job #2009285)
#include <fstream>
#include <iostream>
using namespace std;
const int MOD = 9901;
const int MAX_N = 257;
int n;
int v[2 * MAX_N];
int DP[2 * MAX_N][2 * MAX_N];
int main() {
ifstream in("culori.in");
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 = 1 ; l <= n ; ++l) {
for(int j = l + 1 ; j <= n ; ++j) {
int i = j - l;
if(v[i] != v[j])
continue;
for(int k = i + 1 ; k < j ; ++k) {
if(v[i + 1] != v[k])
continue;
DP[i][j] += DP[i + 1][k] * DP[k + 1][j];
DP[i][j] = (DP[i][j] % MOD);
}
}
}
ofstream out("culori.out");
out << DP[1][n] << "\n";
out.close();
}