二分探索(ABC 063 D問題)
バグらせまくった
問題
以下ネタバレ注意
問題
以下ネタバレ注意
- int N, A, B;
- int h[100010], x[100010];
- //a÷b以上の最小の整数
- ll CEIL(ll a, ll b) {
- return (a + b - 1) / b;
- }
- bool isOK(ll K) {
- ll cnt = 0;
- REP(i, N) {
- if (B*K < h[i]) {
- cnt += CEIL(h[i] - B * K, A - B);
- }
- }
- if (cnt <= K)return true;
- else return false;
- }
- int binary_search() {
- int ng = -1;
- ll ok = 1000000001;
- while (abs(ok - ng) > 1) {
- ll mid = (ok + ng) / 2;
- if (isOK(mid)) ok = mid;
- else ng = mid;
- }
- return ok;
- }
- int main() {
- cin >> N >> A >> B;
- REP(i, N) {
- cin >> h[i];
- }
- ll ans = binary_search();
- cout << ans << endl;
- }