Cod sursa(job #702813)

Utilizator amaliutzzaGoia Amalia amaliutzza Data 2 martie 2012 09:27:46
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.25 kb
program subsiraltfel;

var fi,fo:Text;
    i,j,n,t,nrc,poz,lung,l:longint;
    q,v,p,final:array[1..100000]of longint;

    procedure pune(x,st,dr:longint);
    var mij:longint;
    begin
        if st=dr then
          begin
              q[st]:=x;
              p[i]:=st;
          end
        else
          begin
              mij:=(st+dr) div 2;
              if x<=q[mij] then pune(x,st,mij)
              else
                pune(x,mij+1,dr);
          end;
    end;

begin
    assign(fi,'scmax.in'); reset(fi);
    assign(fo,'scmax.out'); rewrite(fo);

       readln(fi,n);
       poz:=0;

       for i:=1 to n do read(fi,v[i]);


       for i:=1 to n do
         begin
            if v[i]>q[poz] then
              begin
                 inc(poz);
                 q[poz]:=v[i];
                 p[i]:=poz;
              end
            else
              pune(v[i],1,poz);
         end;


       writeln(fo,poz);

       lung:=poz;
       for i:=n downto 1 do
         begin
             if p[i]=poz then
               begin
                   final[poz]:=v[i];
                   dec(poz);
               end;
         end;

       for i:=1 to lung do write(fo,final[i],' ');

    close(fi); close(Fo);
end.