pascal:
呵呵了。。。醉了。。。
很水。。。
就是求最长不上升子序列和最长不下降子序列。。。
procedure main;
var .............
begin
fillchar(a,sizeof(a),0);
ans:=0; {最长单调序列的长}
readln(n);
for s:=1 to n do begin
read(x);
l:=1; r:=ans; {左、右范围}
whlie l<=r do begin {二分}
m:=(l+r) shr 1;
if a[m]<=x then l:=m+1 else r:=m-1;
end;
if l>ans then inc(ans); {新建,即长度为ans+1的最长单调序列出现了!}
a[l]:=x;
end;
end;