Pagini recente » Cod sursa (job #2646474) | Cod sursa (job #2845968) | Cod sursa (job #2415764) | Rating Danis Malina (malii) | Cod sursa (job #2496200)
#include <cstdio>
using namespace std;
const int MAX_N = 5 * 256;
const int MOD = 9901;
int a[1 + MAX_N];
int dp[1 + MAX_N][1 + MAX_N];
int main() {
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
int n;
scanf("%d", &n);
n = (2 * n) - 1;
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
dp[i][i] = 1;
}
for (int sz = 3; sz <= n; sz += 2) {
for (int i = 1; i + sz - 1 <= n; i++) {
int j = i + sz - 1;
if (a[i] != a[j])
continue;
for (int k = i; k <= j; k++) {
/// i--k, k--j
if (a[i] == a[k])
dp[i][j] = (dp[i][j] + (dp[i + 1][k - 1] * dp[k][j]) % MOD) % MOD;
}
}
}
printf("%d\n", dp[1][n]);
return 0;
}