Cod sursa(job #1117958)

Utilizator alinutzVasiu Alin alinutz Data 23 februarie 2014 21:26:26
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.07 kb
program scmax;
const fi='scmax.in';
      fo='scmax.out';
var v,q,x,v2:array [0..100000] of longint;
    f,g:text;
    n,lq,i,aux:longint;
    bufin,bufout:array[1..65000] of byte;

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


begin
   assign(f,fi);reset(f);
   assign(g,fo);rewrite(g);  settextbuf(f,bufin);  settextbuf(g,bufout);
   read(f,n);
   lq:=0;
   for i:=1 to n do
     begin
      read(f,v[i]);
      if v[i]>q[lq] then
        begin
         inc(lq);
         q[lq]:=v[i];
         x[i]:=lq;
        end
      else
        ins(v[i],1,lq);
     end;

   writeln(g,lq);
   aux:=lq;
   for i:=n downto 1 do
     begin
       if x[i]=lq then
         begin
          v2[lq]:=v[i];
          dec(lq);
         end;
     end;

  for i:=1 to aux do
      write(g,v2[i],' ');

   close(f);
   close(g);
   end.