tăng liên tiếp thì được, chứ tăng không liên tiếp là cái gì? mình không hiểu lắm
Chắc muộn rồi nhưng code(dùng QHĐ):
uses crt,math;
var a:array[0..100000] of Integer;
f:array[0..100000] of Integer;
point:array[0..100000] of Integer;
i,n,j,maxn,maxloc:integer;
f1:text;
Procedure truyvet(vt:integer);
begin
if vt<>0 then truyvet(point[vt])
else exit();
write(a[vt],' ');
end;
Begin
clrscr;
assign(f1,'daycontang.inp'); reset(f1);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
a[0]:=-1; f[0]:=0;
for i:=1 to n do
begin
for j:=i-1 downto 0 do
if (a[i]>a[j]) and (f[j]<>0) then
begin
if f[i]<f[j] then point[i]:=j;
f[i]:=max(f[i],f[j]);
end;
f[i]:=f[i]+1;
if maxn<f[i] then
begin
maxn:=f[i];
maxloc:=i;
end;
end;
writeln(maxn);
truyvet(n);
readln;
End.