Pagini recente » Cod sursa (job #397356) | Cod sursa (job #1084731) | Cod sursa (job #1014925) | Cod sursa (job #3132238) | Cod sursa (job #600746)
Cod sursa(job #600746)
# include <cstdio>
# include <cstring>
const char *FIN = "culori.in", *FOU = "culori.out";
const int MAX = 600, MOD = 9901;
int C[MAX], dp[MAX][MAX];
int N;
inline int _mod (int A) {
if (A >= MOD) A -= MOD;
if (A >= MOD) A %= MOD;
return A;
}
int main (void) {
freopen (FIN, "r", stdin);
scanf ("%d", &N), N <<= 1, --N;
for (int i = 1; i <= N; ++i)
scanf ("%d", C + i), dp[i][i] = 1;
for (int I = 2; I <= N; ++I) {
for (int i = 1; i <= N - I + 1; ++i) {
int j = i + I - 1;
dp[i][j] = 0;
if ((I & 1) && C[i] == C[j]) {
for (int k = i; k < j; ++k)
if (C[i] == C[k]) {
dp[i][j] += dp[i][k] * dp[k + 1][j - 1];
dp[i][j] = _mod (dp[i][j]);
}
}
}
}
fprintf (fopen (FOU, "w"), "%d", dp[1][N]);
}