Pagini recente » Cod sursa (job #1441285) | Cod sursa (job #2798150) | Cod sursa (job #2947168) | Cod sursa (job #1004734) | Cod sursa (job #1116727)
var f,g:text;
bufin,bufout:array[1..65000] of byte;
a,b,v:array[-1..100010] of longint;
i,j,nr,n,x,c:longint;
procedure scrie(nr,i:longint);
begin
while b[i]<>nr do dec(i);
if nr>1 then scrie(nr-1,i);
write(g,a[i],' ');
end;
procedure cauta(x,st,dr:longint);
var m:longint;
begin
if st<dr then begin
m:=(st+dr) div 2;
if v[m]<x then cauta(x,m+1,dr)
else if v[m]>=x then cauta(x,st,m)
else begin c:=m; exit; end;
end
else begin
c:=st;
exit;
end;
end;
begin
assign(f,'scmax.in');
assign(g,'scmax.out');
reset(f);
rewrite(g);
settextbuf(f,bufin);
settextbuf(g,bufout);
readln(f,n);
read(f,v[1]);
a[1]:=v[1];
b[1]:=1;
nr:=1;
for i:=2 to n do begin
read(f,x);
a[i]:=x;
cauta(x,1,nr);
if v[c]>=x then begin
v[c]:=x;
b[i]:=c;
end
else begin
inc(nr);
v[nr]:=x;
b[i]:=nr;
end;
end;
writeln(g,nr);
scrie(nr,i);
close(g);
end.