n = int(input()) b = int(input()) c = list(map(int,input().split())) s = list(map(int,input().split())) x = [[c[i],s[i],i] for i in range(n)] x.sort() a = [x[i][0]*x[i][1] for i in range(n)] ans = 0 for i in range(n-1): x[i+1][1] += x[i][1] a[i+1] += a[i] for i in range(n): l,r = -1,n u = x[i][2] bb = b-s[u] cc = min(b,s[u]) if bb <= 0: ans = max(ans,cc) continue while r-l > 1: mid = (l+r)//2 if i <= mid: z = c[u]*s[u] else: z = 0 if a[mid]-z <= bb: l = mid else: r = mid if i <= l: z = s[u] else: z = 0 cc += x[l][1]-z z *= c[u] bb -= a[l]-z if r != n: cc += bb//x[r][0] ans = max(ans,cc) print(ans)