考え方
最小値の最大値なので,二分探索を考える.すべての要素を$x$以上にできるかは,
- $x + b$以上の要素から$b$減らせる操作回数
- $x$未満の要素から$a$増やさなければならない操作回数
回答例
N, a, b = map(int, input().split()) A = list(map(int, input().split())) def f(x): neg, pos = 0, 0 for AA in A: if AA < x: neg += (x - AA + a - 1) // a if AA - b >= x: pos += (AA - x) // b if pos >= neg: return True return False ok = min(A) ng = 10 ** 10 while ng - ok > 1: mid = (ok + ng) // 2 if f(mid): ok = mid else: ng = mid print(ok)