MMAXPER - Rectangles Perimeter

Tác giả: RR

Ngôn ngữ: Pascal

{$R+,Q+}
uses math;
const
  FINP='';
  FOUT='';
  MAXN=1011;
var
  f1,f2:text;
  n:longint;
  a,b:array[0..MAXN] of longint;
  d:array[0..MAXN,1..2] of longint;
procedure openF;
begin
  assign(f1,FINP); reset(f1);
  assign(f2,FOUT); rewrite(f2);
end;
procedure closeF;
begin
  close(f1); close(f2);
end;
procedure inp;
var
  i:longint;
begin
  read(f1,n);
  for i:=1 to n do
    read(f1,a[i],b[i]);
end;
procedure solve;
var
  i:longint;
begin
  d[1,1]:=b[1];
  d[1,2]:=a[1];
  for i:=2 to n do
    begin
      //Tinh 1
      d[i,1]:=abs(a[i]-a[i-1])+b[i]+d[i-1,1];
      d[i,1]:=max(d[i,1],abs(a[i]-b[i-1])+b[i]+d[i-1,2]);
      //Tinh 2
      d[i,2]:=abs(b[i]-a[i-1])+a[i]+d[i-1,1];
      d[i,2]:=max(d[i,2],abs(b[i]-b[i-1])+a[i]+d[i-1,2]);
    end;
end;
procedure ans;
begin
  writeln(f2,max(d[n,1],d[n,2]));
end;
begin
  openF;
  inp;
  solve;
  ans;
  closeF;
end.

Download