Pagini recente » Cod sursa (job #2944635) | Cod sursa (job #1329975) | Cod sursa (job #1860961) | Cod sursa (job #3159028) | Cod sursa (job #2717289)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("culori.in");
ofstream fout("culori.out");
const int NMAX = 520;
const int mod = 9901;
int N, a[NMAX], dp[NMAX][NMAX];
void add_self(int &a, int b) {
a += b;
if(a >= mod)
a -= mod;
}
int main() {
fin >> N;
N = 2 * N - 1;
for(int i = 1; i <= N; ++i) {
fin >> a[i];
dp[i][i] = 1;
}
for(int lg = 2; lg <= N; ++lg)
for(int i = 1; i + lg - 1 <= N; ++i) {
int j = i + lg - 1;
if(a[i] == a[j] && !((i + j) & 1))
for(int k = i + 1; k < j; ++k)
if(a[i + 1] == a[k])
add_self(dp[i][j], dp[i + 1][k] * dp[k + 1][j] % mod);
}
fout << dp[1][N] << '\n';
}