Pagini recente » Cod sursa (job #592772) | Cod sursa (job #986511) | Cod sursa (job #3206292) | Cod sursa (job #2620522) | Cod sursa (job #2574581)
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.