#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,s,L,l,r,mid,ans,a[200010],h[200010];
bool check(int x)
{
int cnt;
for(int i=1;i<=n;i++)
if(h[i]+a[i]*x>=L) cnt+=h[i]+a[i]*x;
return cnt>=s;
}
signed main()
{
cin>>n>>s>>L;
for(int i=1;i<=n;i++) cin>>h[i];
for(int i=1;i<=n;i++) cin>>a[i];
l=0;r=0xf3f3f;
while(l<=r)
{
mid=(l+r)/2;
if(check(mid))
{
r=mid-1;
ans=mid;
}
else l=mid+1;
}
printf("%lld\n",ans);
return 0;
}
为什么我感觉没啥问题,可是测样例的时候就输出了一些奇奇怪怪的答案! 比如说0;