Cod sursa(job #1686761)

Utilizator laura.calimanLaura Caliman laura.caliman Data 12 aprilie 2016 13:47:26
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.87 kb
var n,i,j,k:longint;
    a,b,c:array[1..100000] of longint;
    
function cautbin(st,dr,k:longint):longint;
var i:longint;
begin
  while st<dr do begin
    i:=(st+dr) div 2;
    if b[i]<k then st:=i+1
    else dr:=i;
  end;
  cautbin:=st;
end;
    
begin
  assign(input,'scmax.in');
  assign(output,'scmax.out');
  reset(input);
  rewrite(output);
  read(n);
  for i:=1 to n do read(a[i]);
  b[1]:=a[1];
  c[1]:=1;
  k:=1;
  for i:=2 to n do begin
    if a[i]>b[k] then begin
      inc(k);
      b[k]:=a[i];
      c[i]:=k;
    end else begin
      j:=cautbin(1,k,a[i]);
      b[j]:=a[i];
      c[i]:=j;
    end;
  end;
  writeln(k);
  j:=k;
  i:=n;
  while k>0 do begin
    if c[i]=k then begin
      b[k]:=a[i];
      dec(k);
    end;
    dec(i);
  end;
  for i:=1 to j do write(b[i],' ');
//  for i:=1 to n do writeln(b[i],' ',c[i]);
end.