石油大亨
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

酒足饭饱之后 PLMM 有些无聊,询问 The__Flash 要不要做什么有趣的事情,The__Flash 立即提议道当然是打游戏啦!

在 RA2 世界中,The__Flash 非常享受占领油田成为石油大亨。

初始地图上有一个兵营和 n 块油田,油田编号为 。兵营中有无限个小兵,The__Flash 可以花费金额 ec,使得兵营在 et 秒过后培养出一名工程师,需要注意的是兵营同一时间只能培养一名工程师且一名工程师至多占领一块油田。工程师从兵营移动到第 i 块油田并将其占领的用时为 t_i 秒。若第 i 块油田在第 $t$ 秒末被 The__Flash 的工程师占领,则该油田从第 $t+1$ 秒末起每秒末可以给 The__Flash 增加 p 的金额。

当前,The__Flash 持有初始金额 s,想要指派工程师按照油田编号从小到大的顺序依次占领所有油田。由于 The__Flash 忙着抢占油田,所以请你帮忙计算他需要的时间。

输入描述:

第一行输入 5 个整数,分别表示 n, ec, et, p

第二行输入 n 个整数,分别表示  ,保证对于  都有

输出描述:

输出一个整数,表示 The__Flash 占领 n 个油田所需的时间,若不可能则输出 -1
示例1

输入

复制
2 1 5 5 2
2 5

输出

复制
15

说明

0 秒:开始训练第 1 个工程师,金额为 1
5 秒:第 1 个工程师训练完毕,开始训练第 2 个工程师,金额为 0
7 秒:第 1 个工程师占领了第 1 块油田,金额为 0
10 秒:第 2 个工程师训练完毕,金额为 15
15 秒:第 2 个工程师占领了第 2 块油田,金额为 40
示例2

输入

复制
5 6 2 7 6
2 3 6 7 7

输出

复制
20
示例3

输入

复制
7 9 5 2 7
4 5 6 8 8 10 10

输出

复制
-1