Cod sursa(job #530752)

Utilizator Vlad2008Vlad VLD Vlad2008 Data 8 februarie 2011 13:34:36
Problema Subsir crescator maximal Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1.02 kb
program scccmax;
var l,p,a:array[1..100000] of longint;
    n:longint;

 Procedure citire;
 var i:longint;
 begin
   assign(input,'scmax.in');reset(input);
   readln(n);
   for i:=0 to (n DIV 5)-1 do
        read(a[5*i],a[5*i+1],a[5*i+2],a[5*i+3],a[5*i+4]);
   for i:=5*(n div 5)+1 to  n do read(a[i]);
 end;


 Procedure dinamic;
 var i,j:longint;
 begin
   l[n]:=1;
   p[n]:=-1;
   for i:=n-1 downto 1 do
     begin
     l[i]:=1;
     p[i]:=-1;
     for j:=i+1 to n do
        if (a[i]<=a[j]) and (l[i]<1+l[j]) then
           begin
           l[i]:=1+l[j];
           p[i]:=j;
           end;
     end;
 end;


 Procedure sol;
 var r,ri,i:longint;
 begin
 assign(output,'scmax.out');rewrite(output);
 r:=0;
 for i:=1 to n do
   if r<l[i] then
   begin
   r:=l[i];
   ri:=i;
   end;
   writeln(r);
   while p[ri]>0 do
      begin
      write(a[ri],' ');
      ri:=p[ri];
      end;
   write(a[ri]);
 end;




 begin
 citire;
 dinamic;
 sol;
 close(input);
 close(output);
 end.