代码:
#include <iostream>
#include<cstdio>
#define MAXN 10000000000
using namespace std;
long long n,k;
long long a[100000+10],b[100000+10];
bool judge(long long mid)
{
long long temp=k;
for(int i=0;i<n;i++)
{
if(a[i]*mid>b[i])//注意细节
temp-=a[i]*mid-b[i];
if(temp<0)
return 0;
}
return true;
}
int main()
{
scanf("%lld%lld",&n,&k);
for(int i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
for(int i=0;i<n;i++)
{
scanf("%lld",&b[i]);
}
long long l=0,r=MAXN,mid;
long long ans=0;
while(l<=r)
{
mid=(l+r)/2;
if(judge(mid))
{
ans=mid;
l=mid+1;
}
else
r=mid-1;
}
printf("%lld\n",ans);
return 0;
}