记录编号 200591 评测结果 AAAAAAAAAA
题目名称 最长上升子序列 最终得分 100
用户昵称 GravatarVacaTionGOD 是否通过 通过
代码语言 Pascal 运行时间 0.002 s
提交时间 2015-10-28 23:48:57 内存使用 3.98 MiB
显示代码纯文本
var
    i,a,n,f0:longint;
    f:array[0..1000000]of longint;

    function find(l,r,a:longint):longint;
    var p:longint;
    begin
        while r-l>1 do begin
            p:=(l+r)div 2;
            if f[p]=a then exit(p);
            if f[p]>a then r:=p else l:=p;
        end;
        find:=r;
    end;
begin
    assign(input,'lis1.in');
    reset(input);
    assign(output,'lis1.out');
    rewrite(output);
    readln(n);
    for i:=1 to n do begin
        read(a);
        if a>f[f0] then begin
            inc(f0);
            f[f0]:=a;
        end
        else f[find(0,f0,a)]:=a;
    end;
    writeln(f0);
    close(input);
    close(output);
end.