#include <bits/stdc++.h>
using namespace std;
#define ll long long
using i128 = __int128_t;
const ll MOD = 1e9 + 7;
ll n,m;
vector<ll> Alst;
vector<ll> Blst;
bool check(ll x){
i128 total=0;
for(ll i=0;i<n;i++){
if(Alst[i]<Blst[i]){
total+=(x+Blst[i]-1)/Blst[i];
}
else{
if(x<=m*Alst[i]){
total+=(x+Alst[i]-1)/Alst[i];
}
else{
total+=m;
total+=((x-m*Alst[i])+Blst[i]-1)/Blst[i];
}
}
}
return total<=n*m;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
Alst.resize(n);
Blst.resize(n);
for(ll i=0;i<n;i++){
cin >> Alst[i];
}
for(ll i=0;i<n;i++){
cin >> Blst[i];
}
ll L=1;
ll R=1e18;
ll ans;
while(L<=R){
ll mid=L+(R-L)/2;
if(check(mid)){
L=mid+1;
ans=mid;
}
else{
R=mid-1;
}
}
cout << ans;
}