WA on #1 and TLE on#16
#include<bits/stdc++.h>
#define int ull
#define ull unsigned long long
using namespace std;
inline int read()
{
int s=0,k=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') k=-1;
for(;isdigit(ch);ch=getchar()) s=(s<<1)+(s<<3)+(ch^48);
return s*k;
}
int n,S,L,h[1919810],a[1919810],l,r,ans;
bool check(int x)
{
priority_queue<int,vector<int>,greater<int> >q;
for(int i=1;i<=n;i++)
if(h[i]+x*a[i]>=L)
q.push(h[i]+x*a[i]);
int res=0;
while(q.size())
{
res+=q.top();
q.pop();
if(res>=S)
return 1;
}
return 0;
}
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();
l=0,r=1000000000000000000;
while(l<=r)
{
int mid=(l+r)>>1;
if(check(mid)) r=mid-1,ans=mid;
else l=mid+1;
}
cout<<ans;
}