using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static int NN => int.Parse(ReadLine());
    static int[] NList => ReadLine().Split().Select(int.Parse).ToArray();
    public static void Main()
    {
        Solve();
    }
    static void Solve()
    {
        var c = NList;
        var (n, a, b, x, y) = (c[0], c[1], c[2], c[3], c[4]);
        var h = NList.ToList();
        var ok = 1_000_000_000;
        var ng = -1;
        while (ok - ng > 1)
        {
            var mid = (ok + ng) / 2;
            if (Check(n, a, b, x, y, h.Select(hi => Math.Max(0, hi - mid)).ToList())) ok = mid;
            else ng = mid;
        }
        WriteLine(ok);
    }
    static bool Check(int n, int a, int b, int x, int y, List<int> h)
    {
        for (var i = 0; i < n; ++i)
        {
            if (a == 0) break;
            if (h[i] >= x)
            {
                var count = Math.Min(a, h[i] / x);
                a -= count;
                h[i] -= count * x;
            }
        }
        h.Sort((l, r) => r.CompareTo(l));
        var sum = 0L;
        for (var i = 0; i < h.Count; ++i)
        {
            if (a > 0 && h[i] > 0) --a;
            else sum += h[i];
        }
        return sum <= (long)b * y;
    }
}