Pagini recente » Cod sursa (job #522643) | Cod sursa (job #1314614) | Cod sursa (job #1637285) | Cod sursa (job #2823833) | Cod sursa (job #1133328)
#include <cstdio>
using namespace std;
#define MOD 9901
int N;
int v[512];
void read() {
scanf("%d", &N);
N = 2 * N - 1;
for(int i = 0; i < N; ++i) {
scanf("%d", v + i);
}
}
int mem[512][512];
int f(int li, int ls) {
if(mem[li][ls] == -1) {
if(v[li] != v[ls]) {
mem[li][ls] = 0;
} else if(li == ls) {
mem[li][ls] = 1;
} else {
int fcolor = v[li];
int s = 0;
for(int i = li + 2; i <= ls; i += 2) {
if(v[i] == fcolor) {
s = (s + f(li + 1, i - 1)) % MOD;
}
}
mem[li][ls] = s;
}
}
return mem[li][ls];
}
void init() {
for(int i = 0; i < N; ++i) {
for(int j = 0; j < N; ++j) {
mem[i][j] = -1;
}
}
}
int main(int argc, char *argv[]) {
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
read();
init();
printf("%d\n", f(0, N - 1));
return 0;
}