#include<bits/stdc++.h>
using namespace std;
#define endl '\n'//改变换行符格式;
#define rep(i,a,n) for(int i=a;i<=n;i++)//正向遍历数组;
#define per(i,n,a) for(int i=n;i>=a;i--)//反向遍历数组;
#define link(i,a,b,c) for(int i=a;i!=b;i=c)//遍历链表;
#define fi first //attetion-->pair<>s-->s.fi
#define se second //attetion-->pair<>s-->s.se
#define SZ(x) ((int)(x).size())//取数组大小;
#define SD(x) scanf("%d",&x)//输入;
#define SLD(x) scanf("%lld",&x)//输入;
#define SLF(x) scanf("%lf",&x)//输入;
#define PD(x) printf("%d",x)//输出;
#define PLD(x) printf("%lld",x)//输出;
#define PLF(x) printf("%lf",x)//输出;
typedef vector<int> VI;//vector数组;
typedef long long ll;
typedef pair<int, int> PII;//int int的pair;
typedef pair<ll, ll> pii;//long long的pair;
const ll mod = 998244353;
const ll inf = 0x3f3f3f3f;//无穷大;
ll Min(ll a, ll b) { return a > b ? b : a; }//取最小long long;
ll Max(ll a, ll b) { return a > b ? a : b; }//取最大long long;
ll Abs(ll x) { return x ? x : -x; }//取绝对值;
ll binpow(ll a, ll b) { ll res = 1; a %= mod; while (b > 0) { if (b & 1)res = res * a % mod; a = a * a % mod; b >>= 1; }return res; }//快速幂|乘法逆元;
ll inv(ll x) { return binpow(x, mod - 2); }//逆元;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }//最大公约数;
ll lcm(ll a, ll b) { return a * (b / gcd(a, b)); }//最小公倍数;
ll lowbit(ll x) {return x & (-x);}
const double PI = acos(-1);
const int inf_max = 0x3f3f3f3f;
const int inf_min = ~0x3f3f3f3f;
const ll inf_max_ll = 0x3f3f3f3f3f3f3f3f;
const ll inf_min_ll = ~0x3f3f3f3f3f3f3f3f;
const int N=1e4+10;
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
ll n,a,b;
cin>>n>>a>>b;
vector<ll> vec(n);
rep(i,1,n)cin>>vec[i];
ll ok=1,ng=1e10;
while(abs(ok-ng)>1){//枚举这个最大的最小值,枚举的依据是加的数要和减的数相等;
ll mid=(ok+ng)/2;
ll cnta=0,cntb=0;
rep(i,1,n){
if(vec[i]<mid){
cnta+=(mid-vec[i]-1)/a+1;//为什么要加到比mid大?因为最终的mid就是答案给了边界,所以mid就是最小值,既然mid是最小值那么所有数都要比mid大,因此加数直到比mid大;
}
else{
cntb+=(vec[i]-mid)/b;//减数直到大于等于mid,因为mid最小值(同上)因此减数不能比mid小;
}
}
if(cnta<=cntb){//数太小了,导致要减很多次,因此要增大mid,因此要修改左边界;
ok=mid;
}
else {//数太大了,导致要加的次数比要减的次数多,因此要减小mid,因此要修改右边界;
ng=mid;
}
}
cout<<ok;
return 0;
}
https://atcoder.jp/contests/arc144/tasks/arc144_b
附上原题链接OvO