Pagini recente » Cod sursa (job #2459512) | Cod sursa (job #1146765) | Cod sursa (job #3245607) | Cod sursa (job #174227) | Cod sursa (job #2333256)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("culori.in");
ofstream fo("culori.out");
const int NMAX = 300;
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 = 1; l <= 2 * n; l++)
{
for (int i = 1; i < 2 * n; i++)
{
int j = i + l;
if (j < i + 2 || 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 + 1][k - 1] * dp[k + 1][j - 1];
dp[i][j] %= MOD;
}
}
}
}
fo << dp[1][2 * n - 1];
return 0;
}