Pagini recente » Cod sursa (job #307531) | Cod sursa (job #1593090) | Diferente pentru implica-te/arhiva-educationala intre reviziile 45 si 44 | Cod sursa (job #1360179) | Cod sursa (job #311876)
Cod sursa(job #311876)
using namespace std;
#include<cstdio>
#define MAX_N 256
#define Mod 9901
int A[2 * MAX_N + 1][2 * MAX_N + 1];
int C[2 * MAX_N + 1];
int N;
void read()
{
freopen("culori.in","r",stdin);
freopen("culori.out","w",stdout);
scanf("%d",&N);
int i;
for(i=1;i <= 2 * N - 1;++i)
{
scanf("%d",&C[i]);
A[i][i] = 1;
}
}
void dp()
{
int start, i,j,k;
for( start = 2; start <= 2*N - 1; ++start)
{
i = 1; j = start;
while( j < 2*N )
{
if( (j-i+1) % 2 == 1 && C[i] == C[j])
for(k = i+1; k<j; ++k)
if(C[i+1] == C[k] && C[k+1] == C[j])
{
A[i][j] += A[i+1][k] * A[k+1][j];
if(A[i][j] >= Mod) A[i][j] -= Mod;
}
++i; ++j;
}
}
printf("%d\n",A[1][2*N-1]);
}
int main()
{
read();
dp();
return 0;
}