ac代码
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
struct tree
{
ll h;
ll a;
}m[200009];
ll n,s,l;
bool solve(ll x)
{
ll ans = s;
for(int i = 0; i < n; i++)
{
if(m[i].h+m[i].a*x>=l) {
ans-=(m[i].h+m[i].a*x);
if(ans<=0) return true;
}
}
return false;
}
int main()
{
ll ol=0;
cin >> n >> s >> l;
for(int i=0;i<n;i++) scanf("%lld",&m[i].h);
for(int i=0;i<n;i++) {
scanf("%lld",&m[i].a);
ol=max(ol,m[i].a);
}
ll l=-1,r=1e18/ol+1;
while(l+1<r)
{
ll mid = l + (r-l)/2;
if(solve(mid)) r = mid ;
else l = mid ;
}
cout << r << endl;
return 0;
}