75分求助,找不到哪错了
#include<iostream>
#include<cstdio>
using namespace std;
#define int unsigned long long
int n,s,l,h[200003],a[200003],head=1,tail,ans;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-48;ch=getchar();}
return x*f;
}
bool check(int t)
{
int x=0;
for(int i=1;i<=n;i++)
{
if(h[i]+a[i]*t>=l)
x+=h[i]+a[i]*t;
//cout<<x<<" ";
if(x>=s)
return true;
}
return false;
}
signed main()
{
n=read();
s=read();
l=read();
for(int i=1;i<=n;i++)
h[i]=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
if(l/a[i]+1>tail)
tail=l/a[i]+1;
}
while(head<tail)
{
if(check((head+tail)/2))
tail=((head+tail)/2);
else
head=((head+tail)/2)+1;
//cout<<head<<" "<<tail<<"\n";
}
cout<<head;
return 0;
}