题解:二分后变为可行性问题
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n,P,Q,l,r,mid,ans;
int w[500005];
bool ok(int x){
int t=0;
for(int i=1;i<=n;i++)
{
if(x*P>=w[i]) continue;
else {
t+=(w[i]-x*P)/Q;
if((w[i]-x*P)%Q) t++;
}
}
return t<=x;
}
int main()
{
cin>>n>>P>>Q;
for(int i=1;i<=n;i++)
scanf("%d",&w[i]);
l=1,r=1000000;
while(l<=r){
mid=(l+r)>>1;
if(ok(mid))
r=mid-1,ans=mid;
else
l=mid+1;
}
cout<<ans<<endl;
}