Pagini recente » Cod sursa (job #1729811) | Cod sursa (job #1238344) | Cod sursa (job #3228991) | Cod sursa (job #48173) | Cod sursa (job #18228)
Cod sursa(job #18228)
#include <cstdio>
#define mod 9901
#define Nmax 512
int n, v[Nmax];
int c[Nmax][Nmax];
char viz[Nmax][Nmax];
void readdata()
{
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= 2*n-1; ++i)
scanf("%d", &v[i]);
}
int sol(int st, int dr)
{
int rez = 0, i, aux;
if (st > dr) return 1;
if (viz[st][dr]) return c[st][dr];
if (v[st] != v[dr])
{
viz[st][dr] = 1;
return 0;
}
viz[st][dr] = 1;
for (i = st+1; i < dr; ++i)
if (v[i] == v[st])
{
aux = sol(st+1, i-1) * sol(i, dr);
aux %= mod;
rez += aux;
rez %= mod;
}
rez += sol(st+1, dr-1);
rez %= mod;
c[st][dr] = rez;
return c[st][dr];
}
int main()
{
readdata();
printf("%d\n", sol(1, 2*n-1));
return 0;
}