Cod sursa(job #140100)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 21 februarie 2008 11:55:24
Problema Subsir 2 Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.36 kb
var
   i,j,n,max,p:longint;
   f:text;
   poz,a,l:array[1..5000] of longint;
Begin
     assign(f,'sir.in');
     reset(f);
     readln(f,n);
     for i:=1 to n do
         read(f,a[i]);
     close(f);
     { in vectorul L retin lungimea unei posibile secvente }
     L[n]:=1; { orice numar face parte din cel putin o secventa de lungime 1 }
     { vector in care retin indici secventei de unde vin }
     poz[n]:=-1;
     { plecam de la sfarsit }
     for i:=n-1 downto 1 do
     begin
          L[i]:=1;
          poz[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];
                               poz[i]:=j;
                          end;
     end;
{
     Pentru a determina solutia optima a problemei,
     determinam maximul din vectorul L, apoi afisam solutia,
     incepand cu pozitia maximului si utilizand informatiile
     memorate in vectorul poz:
}
     max:=L[1];p:=1;
     for i:=2 to n do
         if max<L[i] then begin
                               max:=L[i];
                               p:=i;
                          end;
     assign(f,'sir.out'); rewrite(f);
     writeln(f,max);
     i:=p;
     while i<>-1 do
     begin
          write(f,a[i],' ');
          i:=poz[i];
     end;
     close(f);
End.