#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;
inline int read()
{
int x=0;
bool flag=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
{
flag=0;
}
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+c-'0';
c=getchar();
}
return (flag?x:~(x-1));
}
int n,w,L;
int h[200001],a[200001];
inline bool check(int f)
{
int ans=0,cnt=0;
for(register int i=1;i<=n;i++)
{
cnt=h[i]+a[i]*f;
if(h[i]+a[i]*f>=L)
{
ans+=cnt;
}
if(ans>=w)
{
break;
}
}
return ans>=w;
}
signed main()
{
n=read(),w=read(),L=read();
for(register int i=1;i<=n;i++)
{
h[i]=read();
}
for(register int i=1;i<=n;i++)
{
a[i]=read();
}
int l=0,r=1e18,ans=0;
while(l<=r)
{
int mid=(l+r)>>1;
if(check(mid))
{
r=mid-1;
ans=mid;
}else
{
l=mid+1;
}
}
printf("%lld",ans);
return 0;
}