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)