# -*- coding: utf-8 -*-

def inpl(): return tuple(map(int, input().split()))



N, A, B = inpl()

D = A-B

H = []

res = 0

for _ in range(N):

    H.append(int(eval(input())))



H = sorted(H)

l = sum(H) // (A+B*(N-1))

r = sum([h//A + (h%A>0) for h in H])



def judge(m):

    nH = [h - B*m for h in H]

    if sum([h//D + (h%D>0) for h in nH if h > 0]) <= m:

        return True

    else:

        return False



while r-l > 1:

    mid = (l+r)//2

    if judge(mid):

        r = mid

    else:

        l = mid

if judge(l):

    print(l)

else:

    print(r)
# -*- coding: utf-8 -*-

import numpy as np



N, A, B = list(map(int, input().split()))

C = A - B



E = np.array([int(eval(input())) for _ in range(N)], dtype=np.int64)

Z = np.zeros(N, dtype=np.int64)



OK = (np.max(E) // B) + 1

NG = 0



while (OK - NG) > 1:

    m = (OK + NG)//2



    if -np.sum((-np.maximum(Z, E-m*B) // C)) <= m:

        OK = m

    else:

        NG = m



print(OK)
# -*- coding: utf-8 -*-
def inpl():
    return tuple(map(int, input().split()))


N, A, B = inpl()
D = A - B
H = []
res = 0
for _ in range(N):
    H.append(int(eval(input())))
H = sorted(H)
l = sum(H) // (A + B * (N - 1))
r = sum([h // A + (h % A > 0) for h in H])


def judge(m):
    nH = [h - B * m for h in H]
    if sum([h // D + (h % D > 0) for h in nH if h > 0]) <= m:
        return True
    else:
        return False


while r - l > 1:
    mid = (l + r) // 2
    if judge(mid):
        r = mid
    else:
        l = mid
if judge(l):
    print(l)
else:
    print(r)

# -*- coding: utf-8 -*-
import numpy as np

N, A, B = list(map(int, input().split()))
C = A - B
E = np.array([int(eval(input())) for _ in range(N)], dtype=np.int64)
Z = np.zeros(N, dtype=np.int64)
OK = (np.max(E) // B) + 1
NG = 0
while (OK - NG) > 1:
    m = (OK + NG) // 2
    if -np.sum((-np.maximum(Z, E - m * B) // C)) <= m:
        OK = m
    else:
        NG = m
print(OK)

-def inpl(): -    return tuple(map(int, input().split())) +import numpy as np - -N, A, B = inpl() -D = A - B -H = [] -res = 0 -for _ in range(N): -    H.append(int(eval(input()))) -H = sorted(H) -l = sum(H) // (A + B * (N - 1)) -r = sum([h // A + (h % A > 0) for h in H]) - - -def judge(m): -    nH = [h - B * m for h in H] -    if sum([h // D + (h % D > 0) for h in nH if h > 0]) <= m: -        return True +N, A, B = list(map(int, input().split())) +C = A - B +E = np.array([int(eval(input())) for _ in range(N)], dtype=np.int64) +Z = np.zeros(N, dtype=np.int64) +OK = (np.max(E) // B) + 1 +NG = 0 +while (OK - NG) > 1: +    m = (OK + NG) // 2 +    if -np.sum((-np.maximum(Z, E - m * B) // C)) <= m: +        OK = m -        return False - - -while r - l > 1: -    mid = (l + r) // 2 -    if judge(mid): -        r = mid -    else: -        l = mid -if judge(l): -    print(l) -else: -    print(r) +        NG = m +print(OK)