n,a,b,x,y = map(int,input().split())
H = list(map(lambda x:-int(x),input().split()))


import heapq

# print(q)
def isok(mid):
    h = list(map(lambda x:min(0,x+mid),H))
    heapq.heapify(h)
    b_sum = b*y
#     print(h,mid)
    for i in range(a):
        aa = heapq.heappop(h)
        aa = min(aa+x,0)
        heapq.heappush(h,aa)
    h = list(map(lambda x:-int(x),h))
    # print(h)
    for i in range(n):
        d = min(b_sum,h[i])
        h[i] -= d
        b_sum -= d
    if sum(h) == 0:return True
    else:return False
l = -1
r = -min(H)
while r-l > 1:
    mid = (r+l) //2
    if isok(mid):
        r = mid
    else:
        l = mid
print(r)