Cod sursa(job #2574581)

Utilizator Arteni_CristiArteni Cristi Arteni_Cristi Data 6 martie 2020 00:03:36
Problema Subsir crescator maximal Scor 55
Compilator fpc Status done
Runda Arhiva educationala Marime 0.75 kb
var t,v,p:array[1..100005] of longint;
    n,i,k,st,dr,poz,mij,a:longint;
begin
assign(input,'scmax.in'); reset(input);
assign(output,'scmax.out'); rewrite(output);
readln(n);
for i:=1 to n do read(t[i]);
k:=1; v[k]:=t[1]; p[1]:=1;
for i:=2 to n do
 if t[i]>v[k] then
  begin
   inc(k);
   v[k]:=t[i];
   p[i]:=k
  end
 else
  begin
   st:=1; dr:=k; poz:=k+1;
   while st<=dr do
    begin
     mij:=(st+dr) div 2;
     if v[mij]>t[i] then
      begin
       poz:=mij;
       dr:=mij-1
      end else
     st:=mij+1
    end;
   v[poz]:=t[i];
   p[i]:=poz
  end;
writeln(k);
a:=1; i:=1;
while a<=k do
 begin
  while p[i]<a do inc(i);
  while p[i]=a do inc(i);
  write(t[i-1],' ');
  inc(a)
 end;
close(input);
close(output)
end.