Cod sursa(job #549714)

Utilizator gicu_01porcescu gicu gicu_01 Data 8 martie 2011 21:26:57
Problema Cel mai lung subsir comun Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.8 kb
var c:array[0..10000,0..10000]of integer;
    a,b:array[1..10000]of integer;
    n,m:integer;

procedure citire;
var i:integer; f:text;
begin
 assign(f,'cmlsc.in');
 reset(f);
 readln(f,n,m);
 for i:=1 to n do read(f,a[i]); readln(f);
 for i:=1 to m do read(f,b[i]);
 close(f);
end;

function max(a,b:integer):integer;
begin
 if a>b then max:=a else max:=b;
end;

procedure init;
var i,j:integer;
begin
 for i:=1 to n do
  for j:=1 to m do
   if a[i]=b[j] then c[i,j]:=c[i-1,j-1]+1 else c[i,j]:=max(c[i-1,j],c[i,j-1]);
end;

procedure afis;
var i,max:integer; f:text;
begin
 assign(f,'cmlsc.out');
 rewrite(f);
 max:=0;
 writeln(f,c[n,m]);
 for i:=1 to m do
   if c[n,i]>max then begin write(f,b[i],' '); max:=c[n,i]; end;
 close(f);
end;

begin
 citire;
 init;
 afis;
end.