PTRANG - Phân Trang

Tác giả: flashmt

Ngôn ngữ: Pascal

var f,a:array[0..6000] of longint;
    n,l,i,j:longint;

function min(x,y:longint):longint;
begin
     if x<y then min:=x else min:=y;
end;

function max(x,y:longint):longint;
begin
     if x>y then max:=x else max:=y;
end;

begin
     read(n,l);
     for i:=1 to n do
     begin
          read(j);
          a[i]:=a[i-1]+j;
          f[i]:=l;
     end;
     for i:=1 to n do
         for j:=i-1 downto 0 do
             if a[i]-a[j]<=l then
                f[i]:=min(f[i],max(f[j],l-a[i]+a[j]))
             else break;
     writeln(f[n]);
end.

Download