90分求助
查看原帖
90分求助
514736
钟禹衡123楼主2023/8/7 15:50
#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;
inline int read()
{
    int x=0;
    bool flag=1;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-')
        {
            flag=0;
        }
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        x=(x<<1)+(x<<3)+c-'0';
        c=getchar(); 
    }
    return (flag?x:~(x-1));
}
int n,w,L;
int h[200001],a[200001];
inline bool check(int f)
{
	int ans=0,cnt=0;
	for(register int i=1;i<=n;i++)
	{
		cnt=h[i]+a[i]*f;
		if(h[i]+a[i]*f>=L) 
		{
			ans+=cnt;	
		}
		if(ans>=w) 
		{
			break;
		}
	}
	return ans>=w;
}
signed main()
{
    n=read(),w=read(),L=read();
    for(register int i=1;i<=n;i++)
    {
    	h[i]=read();
    }
    for(register int i=1;i<=n;i++)
    {
    	a[i]=read();
    }
    int l=0,r=1e18,ans=0;
    while(l<=r)
    {
    	int mid=(l+r)>>1;
    	if(check(mid))	
		{
			r=mid-1;
			ans=mid;
		}else
		{
			l=mid+1;
		}
	}
	printf("%lld",ans);
    return 0;
}
2023/8/7 15:50
加载中...