Cod sursa(job #768390)

Utilizator t.g.g.tt.g.g.t t.g.g.t Data 16 iulie 2012 18:34:52
Problema Subsir crescator maximal Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.68 kb
var a,b,c:array[0..100000]of longint;  n,i,v,l,j,z,k:longint;
begin
assign(input,'scmax.in'); reset(input);
v:=0;
read(n);
for i:=1 to n do begin read(l); c[i]:=l;
j:=1; z:=v; if v=0 then begin b[1]:=l; v:=1; a[1]:=1 end else
while z>=j do begin
k:=((z+j) div 2);
if l>b[k] then begin if k=v then begin v:=v+1; b[v]:=l; a[i]:=v end else j:=k+1 end
else if l<b[k] then begin if l>b[k-1] then begin b[k]:=l; a[i]:=k; end else z:=k-1;  end else begin z:=j-1; a[i]:=k end;
end;  end;
assign(output,'scmax.out'); rewrite(output);
writeln(v);
for i:=n downto 1 do if a[i]=v then begin b[v]:=c[i]; v:=v-1; end;
i:=1;
while b[i]<>0 do begin write(b[i],' '); i:=i+1 end;
close(output);
end.