n,k=map(int,input().split())

a=list(map(int,input().split()))
f=list(map(int,input().split()))
a=sorted(a)
f=sorted(f,reverse=True)

l=-1
r=10**12
def ok():
    s=0
    for i in range(n):
        s+=max(0,int(int(a[i])-int(c/f[i])))
    return s<=k

while(l+1<r):
    c=int((l+r)/2)
    if ok():
        r=c
    else:
        l=c
print(r)