LINEGAME - VOI09 Trò chơi với băng số

Tác giả: ll931110

Ngôn ngữ: Pascal

Program LINEGAME;
        Const
                input  = '';
                output = '';
        Var
                    a: array[1..1000000] of integer;
                F,non: array[1..2,1..1000000] of int64;
                    n: longint;

Procedure init;
          Var
                fi: text;
                 i: longint;
          Begin
                Assign(fi, input);
                        Reset(fi);

                Readln(fi, n);
                For i:= 1 to n do read(fi, a[i]);

                Close(fi);
          End;

Function max(x,y: int64): int64;
         Begin
                If x < y then max:= y else max:= x;
         End;

Procedure optimize;
          Var
                i: longint;
          Begin
                F[1,1]:= a[1];          F[2,1]:= 0;
                non[1,1]:= 0;           non[2,1]:= 0;

                For i:= 2 to n do
                        Begin
                                F[1,i]:= max(F[2,i - 1],non[2,i - 1]) + a[i];
                                F[2,i]:= max(F[1,i - 1],non[1,i - 1]) - a[i];

                                non[1,i]:= max(F[1,i - 1],non[1,i - 1]);
                                non[2,i]:= max(F[2,i - 1],non[2,i - 1]);
                        End;
          End;

Procedure solve;
          Var
                  fo: text;
                 k,p: int64;
          Begin
                  Assign(fo, output);
                        Rewrite(fo);

                  k:= max(F[1,n],F[2,n]);
                  p:= max(non[1,n],non[2,n]);

                  If k > p then writeln(fo, k) else writeln(fo, p);
                  Close(fo);
          End;

Begin
        init;
        optimize;
        solve;
End.

Download