using static System.Math; using System; public class Hello { static void Main() { string[] line = Console.ReadLine().Trim().Split(' '); var n = int.Parse(line[0]); var k = int.Parse(line[1]); var x = int.Parse(line[2]); var y = int.Parse(line[3]); var a = new long[n]; var asum = 0L; var amax = 0L; line = Console.ReadLine().Trim().Split(' '); for (int i = 0; i < n; i++) { a[i] = (int.Parse(line[i]) + k - 2) / k; asum += a[i]; amax = Max(amax, a[i]); } Array.Sort(a); var ans = getAns(n, k, x, y, a, asum, amax); } static long getAns(int n, int k, int x, int y, long[] a, long asum, long amax) { var nz = y / x; if (nz == 0) return amax * y; if (nz >= n) return asum * x; var p = n - nz - 1; var ans = a[p] * y; var tsum = 0L; for (int i = p + 1; i < n; i++) tsum += a[i]; tsum -= nz * a[p]; ans += tsum * x; return ans; } }