Pagini recente » Cod sursa (job #379017) | Cod sursa (job #2066017) | Cod sursa (job #396210) | Cod sursa (job #1516191) | Cod sursa (job #2333275)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("culori.in");
ofstream fo("culori.out");
const int NMAX = 600;
const int MOD = 9901;
int dp[NMAX][NMAX];
int s[NMAX];
int n;
int main()
{
fi >> n;
for (int i = 1; i < 2 * n; i++)
fi >> s[i];
for (int i = 1; i < 2 * n; i++)
dp[i][i] = 1;
for (int l = 2; l <= 2 * n; l++)
for (int i = 1; i < 2 * n; i++)
{
int j = i + l;
if (j >= 2 * n)
continue;
if (s[i] == s[j])
{
dp[i][j] = dp[i + 1][j - 1]; // du-te-n jos si hai inapoi
for (int k = i + 2; k <= j - 2; k++) // un punct intermediar in care ne-am intors in radacina
if (s[i] == s[k])
{
dp[i][j] += dp[i][k] * dp[k + 1][j - 1];
dp[i][j] %= MOD;
}
}
}
fo << dp[1][2 * n - 1];
return 0;
}