#include<iostream>
#define int long long
using namespace std;
int a[214514],b[214514];
int n,m;
int check(int x){
int sum = 0;
for(int i=1;i<=n;i++){
int sum1 = 0;
if(x>=a[i]){
sum1 = 1;
}
if(x>=a[i]+b[i]){
for(int j=1;j<=x-(a[i]+b[i])+1;j++){
sum1 *= 2;
if(sum1 + sum > m){
return 1e9+1;
}
}
}
sum += sum1;
}
return sum;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
int l = 1 ,r = 1e9;
while(l<=r){
int mid = (l + r) >> 1;
int t = check(mid);
if(t==m){
cout<<mid;
return 0;
}
if(check(mid)>m||t == -1){
r = mid-1;
}
else{
l = mid+1;
}
}
cout<<-1;
return 0;
}
https://www.luogu.com.cn/record/191141199