import sys

def solve():
    # 读取所有输入内容
    input_data = sys.stdin.read().split()
    
    if not input_data:
        return

    iterator = iter(input_data)
    
    try:
        n = int(next(iterator))
        
        # 读取距离列表
        dists = []
        for _ in range(n):
            dists.append(int(next(iterator)))
            
        # 读取速度列表
        speeds = []
        for _ in range(n):
            speeds.append(int(next(iterator)))
            
    except StopIteration:
        return

    # 计算每只怪兽的到达时间
    # 存储为 (到达时间, 原始索引) 的元组列表,虽然索引这里不需要,但有助于调试
    arrival_times = []
    for i in range(n):
        d = dists[i]
        s = speeds[i]
        # 使用浮点数计算时间
        t = d / s
        arrival_times.append(t)
    
    # 核心贪心策略:按到达时间从小到大排序
    arrival_times.sort()
    
    count = 0  # 记录消灭的怪兽数量,同时也代表当前的时间 k
    
    for t in arrival_times:
        # 在第 count 分钟开始时射击 (k = count)
        # 必须满足:怪兽到达时间 t > k
        # 如果 t <= k,说明在我们举弓的瞬间,怪兽已经到了或早到了,游戏结束
        if t > count:
            count += 1
        else:
            # 一旦遇到一只无法及时消灭的怪兽,后续的怪兽到达时间更晚(或相等),
            # 而我们需要的时间 k 会更大,所以肯定也无法消灭,直接break
            break
            
    print(count)

if __name__ == "__main__":
    solve()