Pagini recente » Cod sursa (job #2139930) | Cod sursa (job #925356) | Cod sursa (job #3207837) | Cod sursa (job #136293) | Cod sursa (job #702813)
Cod sursa(job #702813)
program subsiraltfel;
var fi,fo:Text;
i,j,n,t,nrc,poz,lung,l:longint;
q,v,p,final:array[1..100000]of longint;
procedure pune(x,st,dr:longint);
var mij:longint;
begin
if st=dr then
begin
q[st]:=x;
p[i]:=st;
end
else
begin
mij:=(st+dr) div 2;
if x<=q[mij] then pune(x,st,mij)
else
pune(x,mij+1,dr);
end;
end;
begin
assign(fi,'scmax.in'); reset(fi);
assign(fo,'scmax.out'); rewrite(fo);
readln(fi,n);
poz:=0;
for i:=1 to n do read(fi,v[i]);
for i:=1 to n do
begin
if v[i]>q[poz] then
begin
inc(poz);
q[poz]:=v[i];
p[i]:=poz;
end
else
pune(v[i],1,poz);
end;
writeln(fo,poz);
lung:=poz;
for i:=n downto 1 do
begin
if p[i]=poz then
begin
final[poz]:=v[i];
dec(poz);
end;
end;
for i:=1 to lung do write(fo,final[i],' ');
close(fi); close(Fo);
end.