不是VIP会员,不能显示答案

题目解答

题目:
var
n,i,p,max:longint;
dp,a:array[0..1000] of longint;
function Binary_Search(x:longint):longint;
var
l,r,m,i:longint;
begin
l:=0;
r:=max;
while l+3<r do
begin
m:=(l+r) div 2;
if dp[m]>=x then r:=m-1
else l:=m;
end;
for i:=r downto l do
if dp[i]<x then exit(i);
end;
begin
readln(n);
for i:=1 to n do read(a[i]);
fillchar(dp,sizeof(dp),$20);
dp[0]:=0;
max:=0;
for i:=1 to n do
begin
p:=Binary_Search(a[i]);
p:=p+1;
dp[p]:=a[i];
if p>max then max:=p;
end;
writeln(max);
end.
输入1:
4
4 3 5 1


输入2:
5
4 4 3 5 1


输出:2|2
考点:
分析:
解答:
评论:
老师: