LIQ - Dãy con tăng dài nhất ( bản dễ )

Tác giả: ll931110

Ngôn ngữ: Pascal

Program LIQ;
        Const
                input  = '';
                output = '';
                   max = 1000;
        Var
                x,l: array[0..max + 1] of integer;
                  n: integer;

Procedure enter;
          Var
                 f: text;
                 i: integer;
          Begin
                Assign(f, input);
                        Reset(f);
                        Readln(f, n);
                        For i:= 1 to n do read(f, x[i]);
                Close(f);

                x[0]:= Low(integer);
                x[max + 1]:= High(integer);
          End;

Procedure optimize;
          Var
                i,j,jmax: integer;
          Begin
                l[n + 1]:= 1;
                For i:= n downto 0 do
                        Begin
                                jmax:= n + 1;
                                For j:= i + 1 to n + 1 do
                                        If (x[j] > x[i]) and (l[j] > l[jmax]) then jmax:= j;
                                l[i]:= l[jmax] + 1;
                        End;
          End;

Procedure printresult;
          Var
                f: text;
          Begin
                Assign(f, output);
                        Rewrite(f);
                        Writeln(f, l[0] - 2);
                Close(f);
          End;

Begin
        enter;
        optimize;
        printresult;
End.

Download