Pagini recente » Cod sursa (job #2828797) | Cod sursa (job #1051954) | Cod sursa (job #1844071) | Cod sursa (job #1344661) | Cod sursa (job #18612)
Cod sursa(job #18612)
const
FIN = 'culori.in';
FOUT = 'culori.out';
NMAX = 600;
prim = 9901;
VAR
A : array[ 1..NMAX, 1..NMAX ] of longint;
color : array[ 1..NMAX ] of longint;
f, g : text;
N, i, j, k, l, left, t : longint;
procedure read_Data;
begin
assign( f, FIN ); reset( f );
readln( f, N );
for i := 1 to 2 * N - 1 do read( f, color[i] );
close( f );
N := 2 * n - 1;
end;
procedure dinamica;
begin
fillchar( a, sizeof( a ), 0 );
for i := 1 to N do A[i,i] := 1;
for t := 2 to (n + 1) div 2 do
begin
l := 2 * t - 1;
for j := 1 to N - l + 1 do
if color[j] = color[ j + l - 1 ] then
begin
left := j + l - 1;
for k := j + 1 to left - 1 do
if color[k] = color[j] then
A[ j, left ] := ( A[ j, left ] + A[ j, k ] * A[ k, left ] ) mod prim;
A[ j, left ] := ( A[ j, left ] + A[ j + 1, left - 1 ] ) mod prim;
end;
end;
end;
procedure save;
begin
assign( g, FOUT ); rewrite( g );
writeln( g, A[ 1, N ]);
close( g );
end;
begin
read_data;
dinamica;
save;
end.