Cod sursa(job #208693)

Utilizator FllorynMitu Florin Danut Flloryn Data 17 septembrie 2008 21:28:28
Problema Cel mai lung subsir comun Scor 20
Compilator fpc Status done
Runda Arhiva educationala Marime 1.12 kb
program pascal;
var f,g:text;
    i,j,k,l,p,max,maxim,n,m:longint;
    v,a,b,sol,x:array[1..1024] of longint;

begin
 assign(f,'cmlsc.in'); reset(f);
 assign(g,'cmlsc.out'); rewrite(g);
 readln(f,m,n);
 for i:=1 to m do  read(f,a[i]);  readln(f);
 x:=a;
 k:=0;
 for i:=1 to n do
  begin
     read(f,b[i]);
     for j:=1 to m do
     if b[i]=a[j] then
        begin
           k:=k+1;
           sol[k]:=j;
           a[j]:=-23;
        end;
  end;

     v[k]:=1;
     maxim:=0;
    for l:=k-1 downto 1 do
     begin
      max:=0;
      for j:=l+1 to k do
       if (sol[l]<=sol[j]) and (v[j]>max) then max:=v[j];
      v[l]:=max+1;
      if v[l]>maxim then
       begin
        maxim:=v[l];
        p:=l;
       end;
     end;

   max:=maxim;
   writeln(g,max);
   write(g,x[sol[p]],' ');
   i:=p;
   maxim:=sol[p];
   while (max<>1) do
    begin
      i:=i+1;
      if (sol[i]>maxim) and (v[i]=max-1) then
           begin
              maxim:=sol[i];
              max:=max-1;
              write(g,x[sol[i]],' ');
           end;
    end;
 close(f);
 close(g);
end.