▼考え方
ポイントになる考え方1.~2.を以下に示します。
1.全長L[m]を以下のように区間に分け、区間ごとに燃費を考えます。
0 --- s_1[m] --- s_2[m] ... --- s_N[m] --- L[m]
↑区間 ↑区間 ↑複数の区間 ↑区間
以下、N=2の時を例に説明します。s_1が30[m]、s_2が60[m]のとき、リストsをs=[0,30,60,100]と定義します。
2.出発地点s[i-1]からX[m]走ったあと、まだ一時停止地点s[i]に到達しないのであれば、燃料がF_1[ml]とF_2[ml]の距離が存在します。到達しているのであれば、F_1[ml]の距離のみ存在します。両者を場合分けして区間ごとの燃費の和を計算します。
▼コード
########## 処理0(準備) インプット,リスト定義 ###########
X = int(input())
f_1,f_2 = map(int,input().split())
L,N = map(int,input().split())
# 考え方1.
s = [int(x) for x in input().split()]
s.insert(0,0)
s.append(L)
total = 0
for i in range(1,len(s)):
# 考え方2.
if s[i-1] + X <= s[i]:
total += X*f_1+(s[i]-(s[i-1]+X))*f_2
else:
total += (s[i]-s[i-1])*f_1
print(total)