#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int n,k,arr[N],brr[N],ans;
bool check(int x){
int cnt=0,p=0;
for(int i=1;i<=n;i++){
cnt+=max(p,(arr[i]*brr[i]-x+brr[i]-1)/brr[i]);
}
return cnt<=k;
}
bool cmp(int x,int y){
return x>y;
}
signed main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int i=1;i<=n;i++){
cin>>brr[i];
}
sort(arr+1,arr+1+n);
sort(brr+1,brr+1+n,cmp);
int l=0,r=N*N;
while(l<=r){
int mid=(r+l)>>1;
if(check(mid)){
r=mid-1;
ans=mid;
}else{
l=mid+1;
}
}
cout<<ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgTj0xZTYrMTA7CmludCBuLGssYXJyW05dLGJycltOXSxhbnM7CmJvb2wgY2hlY2soaW50IHgpewoJaW50IGNudD0wLHA9MDsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQljbnQrPW1heChwLChhcnJbaV0qYnJyW2ldLXgrYnJyW2ldLTEpL2JycltpXSk7Cgl9CglyZXR1cm4gY250PD1rOwp9CmJvb2wgY21wKGludCB4LGludCB5KXsKCXJldHVybiB4Pnk7Cn0Kc2lnbmVkIG1haW4oKXsKCWNpbj4+bj4+azsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQljaW4+PmFycltpXTsKCX0KCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQljaW4+PmJycltpXTsKCX0KCXNvcnQoYXJyKzEsYXJyKzErbik7Cglzb3J0KGJycisxLGJycisxK24sY21wKTsKCWludCBsPTAscj1OKk47Cgl3aGlsZShsPD1yKXsKCQlpbnQgbWlkPShyK2wpPj4xOwoJCWlmKGNoZWNrKG1pZCkpewoJCQlyPW1pZC0xOwoJCQlhbnM9bWlkOwoJCX1lbHNlewoJCQlsPW1pZCsxOwoJCX0KCX0KCWNvdXQ8PGFuczsKCXJldHVybiAwOwp9