洛谷p1843
作者:
hongye
,
2025-04-19 09:24:55
· 辽宁
,
所有人可见
,
阅读 6
#include <iostream>
using namespace std;
const int N = 500010;
int val[N];
int n , a , b , max_a;
bool check(int mid){
int cnt = 0;
for(int i=1;i<=n;i++){
int temp = a*mid;
if(temp < val[i]){
cnt += (val[i]-temp+b-1)/b;
}
}
return mid >= cnt;
}
int find(){
int l = 1 , r = max_a;
int mid , ans = 0;
while(l <= r){
mid = (l+r)/2;
if(check(mid)){
ans = mid;
r = mid-1;
}else{
l = mid+1;
}
}
return ans;
}
int main(){
scanf("%d%d%d",&n,&a,&b);
for(int i=1;i<=n;i++){
scanf("%d",val+i);
max_a = max(max_a,val[i]);
}
cout<<find()<<endl;
return 0;
}