90分,14点与19点WA,如何AC?
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,num[2000005],a[2000005],s,l;
bool bl(unsigned long long u)
{
unsigned long long all = 0;
for(unsigned long long i = 0; i < n; i++)
{
unsigned long long tmp = num[i] + a[i] * u;
if(tmp >= l)all += tmp;
if(all >= s)return true;
}
return false;
}
int main()
{
cin >>n>>s>>l;
for(unsigned long long i = 0; i < n; i++)cin >>num[i];
for(unsigned long long i = 0; i < n; i++)cin >>a[i];
unsigned long long l = 0,r = 1e18;
for(int i = 0; i < n; i++)
{
r = min(r,(max(s,l) - num[i])/a[i]+1);
}
while(l != r)
{
unsigned long long mid = (l+r)/2;
if(bl(mid))r = mid;
else l = mid+1;
}
cout <<l;
}