ll H, W, LA, LB, KA, KB; bool chk(ll k){ ll lrng = (H + LA - 1)/ LA; // ll rrng = (W + LB - 1)/ LB; rep(i, lrng + 1) { ll j = (k - i); ll filled_alt = i * KA + j * KB; ll lsize = min(H, i * LA); ll rsize = min(W, j * LB); ll filled = lsize * rsize; ll rem = H * W - filled; if (rem <= filled_alt) return true; } return false; } { rd(H, W, LA, LB, KA, KB); int k; ll ans = bsearch_min[int,k,1,H+W](chk(k)); wt(ans); }