Pagini recente » Cod sursa (job #2773553) | Cod sursa (job #686754) | Cod sursa (job #478087) | Cod sursa (job #1242566) | Cod sursa (job #1686761)
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.