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 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; } }