枚举, DP优化之后也没有能通过所有案例.

def max_value(n, m, a, b):
    max_total = 0
    # 枚举组成一号大礼包的数量 x
    for x in range(min(n // 2, m) + 1):
        # 剩余资源
        remaining_n = n - 2 * x
        remaining_m = m - x
        # 计算能够组成的二号大礼包数量 y
        y = min(remaining_n, remaining_m // 2)
        # 计算总价值
        total = x * a + y * b
        # 更新最大值
        if total > max_total:
            max_total = total
    return max_total

# 读取输入
n, m, a, b = map(int, input().split())
# 输出结果
print(max_value(n, m, a, b))