Cod sursa(job #702772)

Utilizator amaliutzzaGoia Amalia amaliutzza Data 2 martie 2012 09:15:08
Problema Subsir crescator maximal Scor 15
Compilator fpc Status done
Runda Arhiva educationala Marime 1.26 kb
program subsiraltfel;

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

    procedure pune(x,st,dr:integer);
    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
         begin
            read(fi,v[i]);
            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.