QBTICKET - Mua vé tàu hoả

Tác giả: flashmt

Ngôn ngữ: Pascal

const maxn=100011;
var a,b:array[1..maxn] of int64;
    s,f,n:longint;
    l,c:array[1..3] of int64;

procedure rf;
var i:longint;
begin
     for i:=1 to 3 do read(l[i]);
     for i:=1 to 3 do read(c[i]);
     readln;
     readln(n);
     readln(s,f);
     for i:=2 to n do readln(a[i]);
end;

procedure pr;
var i,j,k,t:longint;
begin
     for i:=1 to n do b[i]:=maxlongint*10000;
     b[s]:=0;
     for j:=s+1 to f do
         for i:=j-1 downto s do
         begin
              if a[j]>a[i]+l[3] then break;
              for k:=1 to 3 do
                  if (a[j]-a[i]<=l[k]) and (b[j]>b[i]+c[k]) then
                  begin
                       b[j]:=b[i]+c[k];
                       break;
                  end;
         end;
end;

procedure wf;
begin
     write(b[f]);
end;

begin
     rf;
     pr;
     wf;
end.

Download