//#include //using namespace atcoder; #include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define all(v) v.begin(),v.end() typedef long long ll; #define int ll using ld = long double; using vi = vector; using vs = vector; using P = pair; template bool chmax(T &a, const T b) {if (a < b) {a = b; return true;} else return false; } template bool chmin(T &a, const T b) {if (a > b) {a = b; return true;} else return false; } const int INF = 1e18; //using mint = modint1000000007; //using mint = modint998244353; int n,a,b,x,y; bool solve(priority_queue q,int k,int a,int b){ while(q.size()){ int t = q.top()-k;q.pop(); if(t<0)continue; if(a>0){ if(t>=x){ int c = t/x; t-=c*x; a-=c; if(t>0)q.push(t+k); } else a--; } else{ b-=t; } } return b>=0; } signed main() { cin.tie(0); ios_base::sync_with_stdio(false); cout << fixed << setprecision(20); cin>>n>>a>>b>>x>>y; priority_queue q; rep(i,n){ int h;cin>>h; q.push(h); } b*=y; int ng = -1; int ok = INF; while(abs(ng-ok)>1){ int mid = (ng+ok)/2; if(solve(q,mid,a,b))ok=mid; else ng = mid; } cout << ok <<"\n"; return 0; }