Pagini recente » Cod sursa (job #2530809) | Cod sursa (job #751434) | Cod sursa (job #2109116) | Cod sursa (job #1548498) | Cod sursa (job #18431)
Cod sursa(job #18431)
program culori;
const
fin='culori.in';
fout='culori.out';
nmax=256;
eps=9901;
var
e:array[1..nmax*2-1] of integer;
m:array[1..256,1..256] of longint;
i,j,k,n,x,l,mid:integer;
begin
assign(input,fin);
reset(input);
readln(n);
for i:=1 to n*2-1 do
read(e[i]);
close(input);
assign(output,fout);
rewrite(output);
for i:=1 to 2*n-1 do
m[i,i]:=1;
for i:=1 to 2*n-3 do
if e[i]=e[i+2] then
begin
m[i,i+2]:=1;
m[i+1,i+1]:=0;
end;
l:=5;
while l<=2*n-1 do
begin
for i:=1 to 2*n-l do
begin
if e[i]<>e[l+i-1] then
m[i,l+i-1]:=0
else
begin
j:=i+2;
m[i,l+i-1]:=m[i+1,l+i-2];
while j<l+i-1 do
begin
if e[j]=e[i] then
begin
m[i,l+i-1]:=(m[i,l+i-1]+m[i,j]*m[j,i+l-1])mod eps;
end;
j:=j+2;
end;
end;
end;
for i:=1 to 2*n-l do
for j:=i+2 to l+i-1 do
begin
if m[i,i+l-1]>m[i,j] then
m[i,j]:=0;
if m[i,i+l-1]>m[j,i+l-1] then
m[j,i+l-i]:=0;
end;
inc(l,2);
end;
writeln(m[1,2*n-1] mod eps);
close(output);
end.