MMAXPER - Rectangles Perimeter

Tác giả: flashmt

Ngôn ngữ: Pascal

var a:array[0..1,0..1] of longint;
    n,i,t,x,y,lx,ly:integer;

function max(a,b:longint):longint;
begin
     if a>=b then max:=a else max:=b;
end;

function c(a,b:longint):longint;
begin
     if a<=b then c:=-a
     else c:=a-2*b;
end;

begin
     fillchar(a,sizeof(a),0);
     readln(n);
     readln(x,y);
     a[1,0]:=x+y;
     a[1,1]:=x+y;
     lx:=x; ly:=y;
     for i:=2 to n do
     begin
          t:=i mod 2;
          readln(x,y);
          a[t,0]:=max(a[1-t,0]+c(x,lx),a[1-t,1]+c(x,ly))+x+y;
          a[t,1]:=max(a[1-t,0]+c(y,lx),a[1-t,1]+c(y,ly))+x+y;
          lx:=x; ly:=y;
     end;
     a[t,0]:=a[t,0]-x;
     a[t,1]:=a[t,1]-y;
     write(max(a[t,0],a[t,1]));
end.

Download