Pagini recente » Cod sursa (job #2596493) | Cod sursa (job #2477850) | Cod sursa (job #1985409) | Cod sursa (job #2832490) | Cod sursa (job #18304)
Cod sursa(job #18304)
#include <stdio.h>
#define infile "culori.in"
#define outfile "culori.out"
#define NMAX 520
#define MOD 9901
FILE *fin,*fout;
int n,euler[NMAX];
int A[NMAX][NMAX];
void citire()
{
int i;
fin=fopen(infile,"r");
fscanf(fin,"%d",&n);
for(i=0;i<2*n-1;i++)
fscanf(fin,"%d",&euler[i]);
fclose(fin);
}
int count(short int li, short int ls)
{
if(A[li][ls]!=-1)
return A[li][ls];
if(li==ls)
{
A[li][ls]=1;
return A[li][ls];
}
if(euler[li]!=euler[ls])
{
A[li][ls]=0;
return 0;
}
A[li][ls]=count(li+1,ls-1);
short int i;
for(i=li+2;i<=ls-2;i++)
if(euler[i]==euler[li])
A[li][ls]=(A[li][ls]+count(li+1,i-1)*count(i+1,ls-1))%MOD;
return A[li][ls];
}
int main()
{
citire();
for(int i=0;i<=2*n-1;i++)
for(int j=0;j<=2*n-1;j++)
A[i][j]=-1;
fout=fopen(outfile,"w");
fprintf(fout,"%d\n",count(0,2*n-2));
fclose(fout);
return 0;
}