#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; long long n, a, b, x, y, z = 0; long long h[100010]; priority_queue que; bool solve(long long k) { for (int i = 0; i < n; i++) { que.push(max(z, h[i] - k)); } for (int i = 0; i < a; i++) { long long now = que.top(); que.pop(); que.push(max(z, now - x)); } long long ans = 0; for (int i = 0; i < n; i++) { ans += que.top(); que.pop(); } if (ans <= b * y) { return true; } else { return false; } } int main() { cin >> n >> a >> b >> x >> y; for (int i = 0; i < n; i++) { cin >> h[i]; } long long l = -1, r = 1000000007; while (r - l > 1) { long long mid = (l + r) / 2; if (solve(mid)) { r = mid; } else { l = mid; } } cout << r << endl; }