#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; ll N, A, B, X, Y; vector H; bool solve(ll c){ ll S=0, h, a=A; priority_queue que; for (int i=0; i 0) que.push(H[i]-c); } while(!que.empty() && a){ h = que.top(); que.pop(); h -= X; a--; if (h > 0) que.push(h); } while(!que.empty()){ h = que.top(); S += h; que.pop(); } return S <= B*Y; } int main(){ cin >> N >> A >> B >> X >> Y; H.resize(N); for (int i=0; i> H[i]; ll l=-1, r=1e9, c; while(r-l>1){ c = (l+r)/2; if (solve(c)) r=c; else l=c; } cout << r << endl; }