Pagini recente » Cod sursa (job #2042415) | Cod sursa (job #2330413) | Cod sursa (job #2151702) | Cod sursa (job #1606562) | Cod sursa (job #1021239)
#include <cstdio>
using namespace std;
const long N = 600, MOD = 9901;
long dp [N][N], c [N];
int main (){
long n, lim, i, j, k,d ;
freopen ("culori.in", "r", stdin);
freopen ("culori.out", "w", stdout);
scanf ("%ld", &n);
lim = 2 * n - 1;
for (i = 1; i <= lim; i ++){
scanf ("%ld", &c [i]);
dp [i][i] = 1;
}
for (d = 1; d <= lim; d ++)
for (i = 1; i <= lim; i ++){
j = d + i;
if ((j - i + 1) % 2 && c [j] == c [i]){
for (k = i + 1; k < j; k ++)
if (c [i + 1] == c [k] && c [k + 1] == c [j]){
dp [i][j] = dp [i][j] + dp [i + 1][k] * dp [k + 1][j];
dp [i][j] = dp [i][j] % MOD;
}
}
}
printf ("%ld\n", dp [1][lim]);
return 0;
}