Pagini recente » Cod sursa (job #1900158) | Istoria paginii runda/pascaliada/clasament | Istoria paginii runda/test1234 | Arhiva de probleme | Cod sursa (job #311879)
Cod sursa(job #311879)
using namespace std;
#include<cstdio>
#define MAX_N 256
#define Mod 9901
int A[512][512];
int C[512];
int N;
void read()
{
freopen("culori.in","r",stdin);
freopen("culori.out","w",stdout);
scanf("%d",&N);
int i;
N = 2*N - 1;
for(i=1;i <= N;++i)
scanf("%d",&C[i]);
}
void dp()
{
int start, i,j,k, x;
for( start = 0; start <= N; start+=2)
{
for(x = 1; x+start<=N; ++x)
{
i = x; j = start + x;
if(i == j) { A[i][j] = 1; continue; }
if(C[i]!=C[j]) { A[i][j] = 0; continue; }
for(k = i+1; k<j; ++k)
if(C[i+1] == C[k])
{
A[i][j] += A[i+1][k] * A[k+1][j];
if(A[i][j] >= Mod) A[i][j] -= Mod;
}
}
}
printf("%d\n",A[1][N]%Mod);
}
int main()
{
read();
dp();
return 0;
}