Pagini recente » Cod sursa (job #1486491) | Cod sursa (job #1483247) | Cod sursa (job #1792037) | Cod sursa (job #210515) | Cod sursa (job #1361293)
program tab1_infoarena;
var n,maxim,k,nr,i,j,poz,psup,u:integer;
best,p:array [0..103] of longint;
v:array [0..103] of longint;
l:array [0..103] of longint;
m:longint;
f,g:text;
procedure afis(i:integer);
begin
if (p[i]>0) then afis(p[i]);
write(g,v[i],' ');
end;
function caut(x:longint):integer;
begin
psup:=0;
u:=nr;
m:=(psup+u) div 2;
while psup<=u do
begin
if (v[l[m]]<x) and (v[l[m+1]]>=x) then
begin
nr:=m;
break;
end
else
begin
if (v[l[m+1]]<x) then
begin
psup:=m+1;
m:=(psup+u) div 2;
end
else
begin
u:=m-1;
m:=(psup+u) div 2;
end;
end;
end;
caut:=nr;
end;
begin
assign(f,'scmax.in');
reset(f);
assign(g,'scmax.out');
rewrite(g);
readln(f,n);
nr:=1;
for i:=1 to n do
read(f,v[i]);
best[1]:=1;
l[1]:=1;
l[0]:=0;
for i:=2 to n do
begin
poz:=caut(v[i]);
p[i]:=l[poz];
best[i]:=poz+1;
l[poz+1]:=i;
if (nr<poz+1) then nr:=poz+1;
end;
maxim:=0;
poz:=0;
for i:=1 to n do
if maxim<best[i] then
begin
maxim:=best[i];
poz:=i;
end;
writeln(g,maxim);
afis(poz);
close(f);
close(g);
end.