#include <iostream> #include <vector> #include <algorithm> using namespace std; int l[4],c[4]; long f[10010],dis[10010]; //f代表费用,dis表示离第一个的距离 long cost[10010][4]; int main() { long n,i,j,k; long Tstart,Tend; for (i=1;i<=3;i++) cin>>l[i]; for (i=1;i<=3;i++) cin>>c[i]; cin>>n>>Tstart>>Tend; if (Tstart>Tend) { Tstart =Tstart+Tend; Tend = Tstart-Tend; Tstart = Tstart-Tend; } for (i=2;i<=n;i++) cin>>dis[i]; dis[1]=0; for (j=1;j<=3;j++) //确定每个点到前面距离最接近在l[j]内的,将cost[i,j]设定 { for (i=Tend;i>=Tstart;i--) { for (k=i;k>=Tstart;k--) { if(dis[i]-dis[k-1]>l[j]) break; } cost[i][j]=k; if (k<=Tstart) cost[i][j] =Tstart; } } f[Tstart] =0; //设初值 for (i=Tstart+1;i<=Tend;i++) { f[i]=1000000000; for(j=1;j<=3;j++) { if (cost[i][j]!=i) { if (f[cost[i][j]]+c[j]<f[i]) f[i]=f[cost[i][j]]+c[j]; } } } cout<<f[Tend]<<endl; return 0; }