Cod sursa(job #714777)
Utilizator | Data | 16 martie 2012 09:19:18 | |
---|---|---|---|
Problema | Cel mai lung subsir comun | Scor | 10 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.95 kb |
var n,m:word;
i,j,k,max,v,h,e:integer;
s:array[1..1050,1..1050]of word;
kir:array[1..1050]of word;
b,ki:text;
begin
assign(b,'cmlsc.in');
assign(ki,'cmlsc.out');
reset(b);
rewrite(ki);
readln(b,n,m);
for i:=1 to n do begin
read(b,s[1,i+1]);
end;
readln(b);
for i:=1 to m do begin
read(b,s[i+1,1]);
end;
for i:=2 to m+1 do
for j:=2 to n+1 do
if s[1,j]=s[i,1] then begin
max:=0;
for k:=j-1 downto 2 do
if (s[1,j]>s[1,k]) AND (s[i,k]>max) then
max:=s[i,k];
s[i,j]:=max+1;
for k:=i+1 to m+1 do if s[k,j]<max+1 then s[k,j]:=max+1;
end;
for i:=1 to m+1 do begin
for j:=1 to n+1 do write(s[i,j]:3);
writeln;
end;
max:=0;
for i:= n+1 downto 2 do if s[m+1,i]>max then begin max:=s[m+1,i]; h:=i; end;
writeln(ki,max);
kir[1]:=s[1,h];
v:=2;
max:=max-1;
e:=h;
for i:=h-1 downto 2 do if (s[m+1,i]=max) AND (max>0) AND (s[1,i]<=s[1,e])
then begin dec(max);
kir[v]:=s[1,i];
inc(v);
e:=i;
end;
for i:=v-1 downto 1 do write(ki,kir[i],' ');
close(b);
close(ki);
end.