蒟蒻代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5+5;
int n,s,l,ak[N],h[N];
bool check(int x)
{
int cnt=0;
for(int i=0;i<n;i++)
{
if(h[i]>=l or x>=(l-h[i]-1)/ak[i]+1)
{
if(h[i]>=s or x>=(s-h[i]-1)/ak[i]+1) return true;
cnt+=h[i]+x*ak[i];
}
if(cnt>=s) return 1;
}
return 0;
}
signed main()
{
cin>>n>>s>>l;
for(int i=0;i<n;i++) cin>>h[i];
for(int i=0;i<n;i++) cin>>ak[i];
int l=0,r=max(l,s);
while(l<r)
{
int mid=(l+r)/2;
if(check(mid)) r=mid;
else l=mid+1;
}
cout<<l<<endl;
return 0;
}