def check(y, req, stk, cst, bgt):
    tot = 0
    for i in range(len(req)):
        need = y * req[i]
        diff = max(0, need - stk[i])
        tot += diff * cst[i]
    return tot <= bgt

def solve(req, stk, cst, bgt):
    low = 0
    high = 10**12
    ans = 0
    
    while low <= high:
        mid = (low + high) // 2
        
        if check(mid, req, stk, cst, bgt):
            ans = mid
            low = mid + 1
        else:
            high = mid - 1
            
    return ans