只需要枚举使用单体攻击的次数就行了。

import sys
import math
import queue
import itertools
import heapq
from collections import deque
from array import array
from bisect import bisect_right


def read():
    line = sys.stdin.readline()
    if not line:
        return []
    return list(map(int, line.split()))


def readf():
    line = sys.stdin.readline()
    if not line:
        return []
    return list(map(float, line.split()))


mod = 10**9 + 7
inf = 10**18


def solve():
    a, b, x, y = read()
    ans = inf
    for i in range(0, 21):  # 枚举单体攻击次数
        cnt = i
        res = 0
        aa, bb = a, b
        while cnt > 0:
            if aa > bb:
                aa -= x
            else:
                bb -= x
            res += 1
            cnt -= 1
        if aa > 0 or bb > 0:
            mx = max(aa, bb)
            res += (mx + y - 1) // y
        ans = min(ans, res)
    print(ans)


def main():
    t = 1
    # t = int(sys.stdin.readline())
    for _ in range(t):
        solve()


if __name__ == "__main__":
    main()