Cod sursa(job #516711)

Utilizator ChallengeMurtaza Alexandru Challenge Data 25 decembrie 2010 21:38:01
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

const char InFile[]="culori.in";
const char OutFile[]="culori.out";
const int MaxN=600;
const int MOD=9901;

ifstream fin(InFile);
ofstream fout(OutFile);

int N,A[MaxN][MaxN],V[MaxN];

int main()
{
	fin>>N;
	N<<=1;--N;
	for(register int i=0;i<N;++i)
	{
		fin>>V[i];
	}
	fin.close();

	for(register int i=0;i<N;++i)
	{
		A[i][i]=1;
	}
	for(register int l=1;l<=N;++l)
	{
		for(register int i=0;i<N-l;++i)
		{
			int j=i+l;
			if(V[i]==V[j])
			{
				for(register int k=i+1;k<j;++k)
				{
					if(V[i+1]==V[k])
					{
						A[i][j]+=(A[i+1][k]*A[k+1][j])%MOD;
						A[i][j]%=MOD;
					}
				}
			}
		}
	}

	fout<<A[0][N-1];
	fout.close();
	return 0;
}