Pagini recente » Cod sursa (job #41149) | Cod sursa (job #382159) | Cod sursa (job #1133746) | Cod sursa (job #2782431) | Cod sursa (job #1660620)
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 2 * 260;
const int mod = 9901;
int v[NMAX];
int dp[NMAX][NMAX];
int main()
{
ifstream cin("culori.in");
ofstream cout("culori.out");
int n = 0;
cin >> n;
n = 2 * n - 1;
for (int i = 1; i <= n; ++ i)
cin >> v[i];
vector <int> poss;
poss.reserve(n + 1);
for (int i = n; i; -- i) {
dp[i][i] = 1;
poss.clear();
poss.push_back(i);
for (int j = i + 1; j <= n; ++ j)
if (v[i] == v[j]) {
poss.push_back(j);
for (auto it: poss)
dp[i][j] = (dp[i][j] + dp[i + 1][it - 1] * dp[it][j]) % mod;
}
}
cout << dp[1][n] << '\n';
cin.close();
cout.close();
return 0;
}