#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define s(a) scanf("%lld",&a)
ll n,m;
bool test(ll mid, ll *need, ll *b)
{
ll m1=m;
for(int i=0;i<n;i++)
{
if(mid>=need[i])
continue;
ll diff=need[i]-mid;
double temp1=(double)diff/(double)b[i];
ll temp=ceil(temp1);
if(m1<temp)
return false;
m1-=temp;
}
return true;
}
int main() {
s(n);s(m);
ll a[n+2],b[n+2],sum=0,maxim=0;
for(int i=0;i<n;i++)
{
s(a[i]);
sum+=a[i];
}
for(int i=0;i<n;i++)
s(b[i]);
if(sum<=m)
{
cout<<0;
}
else{
ll need[n];
for(int i=0;i<n;i++)
{
need[i]=a[i]*b[i];
maxim=max(maxim,need[i]);
}
ll low=0,high=maxim,ans=high;
while(high>=low)
{
ll mid=(high+low)/2;
// cout<<mid<<"s ";
if(test(mid,need,b))
{
ans=mid;
high=mid-(ll)1;
// cout<<mid<<endl;
}
else low=mid+(ll)1;
// cout<<ans<<endl;
}
cout<<ans;}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIHMoYSkgc2NhbmYoIiVsbGQiLCZhKQpsbCBuLG07CmJvb2wgdGVzdChsbCBtaWQsIGxsICpuZWVkLCBsbCAqYikKewoJbGwgbTE9bTsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJaWYobWlkPj1uZWVkW2ldKQoJCWNvbnRpbnVlOwoJCWxsIGRpZmY9bmVlZFtpXS1taWQ7CgkJZG91YmxlIHRlbXAxPShkb3VibGUpZGlmZi8oZG91YmxlKWJbaV07CgkJbGwgdGVtcD1jZWlsKHRlbXAxKTsKCQlpZihtMTx0ZW1wKQoJCXJldHVybiBmYWxzZTsKCQltMS09dGVtcDsKCX0KCXJldHVybiB0cnVlOwp9CmludCBtYWluKCkgewoJcyhuKTtzKG0pOwoJbGwgYVtuKzJdLGJbbisyXSxzdW09MCxtYXhpbT0wOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQoJCXMoYVtpXSk7CgkJc3VtKz1hW2ldOwoJCQoJfQoJZm9yKGludCBpPTA7aTxuO2krKykKCXMoYltpXSk7CglpZihzdW08PW0pCgl7CgkJY291dDw8MDsKCX0KCWVsc2V7CglsbCBuZWVkW25dOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQluZWVkW2ldPWFbaV0qYltpXTsKCQltYXhpbT1tYXgobWF4aW0sbmVlZFtpXSk7Cgl9CglsbCBsb3c9MCxoaWdoPW1heGltLGFucz1oaWdoOwoJd2hpbGUoaGlnaD49bG93KQoJewoJCWxsIG1pZD0oaGlnaCtsb3cpLzI7CgkJLy8gY291dDw8bWlkPDwicyAiOwoJCWlmKHRlc3QobWlkLG5lZWQsYikpCgkJewoJCQlhbnM9bWlkOwoJCQloaWdoPW1pZC0obGwpMTsKCQkJLy8gY291dDw8bWlkPDxlbmRsOwoJCX0KCQllbHNlIGxvdz1taWQrKGxsKTE7CgkJLy8gY291dDw8YW5zPDxlbmRsOwoJfQoJY291dDw8YW5zO30KCXJldHVybiAwOwp9