#include<bits/stdc++.h>
using namespace std;
unsigned long long n,s,l,h[1000000],a[1000000];
inline unsigned long long read(){
unsigned long long x=0,c=1;
char ch=' ';
while((ch>'9'||ch<'0')&&ch!='-')ch=getchar();
while(ch=='-') c*=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-'0',ch=getchar();
return x*c;
}
bool check(unsigned long long x){
unsigned long long cnt=0;
for(unsigned long long i=1;i<=n;i++){
if(h[i]+a[i]*x>=l){
cnt+=h[i]+a[i]*x;
}
if(cnt>=s) break;
}
if(cnt<s){
return false;
}else{
return true;
}
}
int main(){
cin>>n>>s>>l;
for(unsigned long long i=1;i<=n;i++) h[i]=read();
for(unsigned long long i=1;i<=n;i++) a[i]=read();
unsigned long long left=0,right=1e18,mid;
while(left<=right){
mid=(left+right)>>1;
if(check(mid)){
right=mid-1;
}else{
left=mid+1;
}
//cout<<"mid:"<<mid<<'\n';
}
cout<<left;
return 0;
}