MMAXPER - Rectangles Perimeter

Tác giả: ll931110

Ngôn ngữ: Pascal

Program MMAXPER;
        Const
                input  = '';
                output = '';
        Var
                a,b: array[1..1000] of longint;
                  F: array[1..1000,0..1] of longint;
                  n: longint;

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

                        Readln(fi, n);
                        For i:= 1 to n do readln(fi, a[i], b[i]);
                Close(fi);
          End;

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

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

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

                                F[i,1]:= max(F[i - 1,0] + abs(a[i] - b[i - 1]), F[i - 1,1] + abs(a[i] - a[i - 1]));
                                F[i,1]:= F[i,1] + b[i];
                        End;
          End;

Procedure solve;
          Var
                fo: text;
          Begin
                Assign(fo, output);
                        Rewrite(fo);
                        Writeln(fo, max(F[n,0], F[n,1]));
                Close(fo);
          End;

Begin
        init;
        optimize;
        solve;
End.

Download