Cod sursa(job #1357149)

Utilizator mirelabocsabocsa mirela mirelabocsa Data 23 februarie 2015 19:48:37
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.96 kb
program mire;
var v,b,poz:array[1..100001] of longint;
    f,g:text;
    n,i,j,x,nr:longint;
function cauta(va,st,dr:longint):longint;
var mij:longint;
begin
   while st<=dr do
     begin
       mij:=(st+dr) div 2;
       if va<=b[mij] then
          dr:=mij-1
        else
         st:=mij+1;
     end;
   cauta:=st;
end;
function max(a,b:longint):longint;
begin
  if a>b then
    max:=a
  else
   max:=b;
end;
begin
 assign(f,'scmax.in'); reset(f);
 assign(g,'scmax.out'); rewrite(g);
   readln(f,n);
   for i:=1 to n do
     read(f,v[i]);
    poz[1]:=1;
     b[1]:=v[1];
     x:=1;
   for i:=2 to n do
     begin
       j:=cauta(v[i],1,x);
       b[j]:=v[i];
       poz[i]:=j;
       x:=max(j,x);
     end;
   nr:=x;
   for i:=n downto 1 do
     if poz[i]=nr then
       begin
         b[nr]:=v[i];
         nr:=nr-1;
       end;
     writeln(g,x);
     for i:=1 to x do
         write(g,b[i],' ');
 close(f);
 close(g);
end.