80分求助,朴素二分查找
查看原帖
80分求助,朴素二分查找
409774
Maysoul楼主2023/4/22 16:01

rt WA on 4,14,16,19

//2023/4/22
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=1e6+10;
int a[2000000],g[2000000];
int num,ans;
int n,s,l;
bool check(int x)
{
	int sum=0;
	for (int i=1;i<=n;i++)
	{
		int t=a[i]+g[i]*x;
		if(t<l)
		{
			continue;
		}
		sum+=t;
	}
	return sum>=s;
}
int bs(int l,int r)
{
	int mid;
	while(l<=r)
	{
		mid=l+(r-l)/2;
		if(check(mid))
		{
			r=mid-1;
			ans=mid;
		}
		else
		{
			l=mid+1;
		}
	}
	return ans;
}
signed main()
{
	long long maxn;
	cin>>n>>s>>l;
	for (int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for (int i=1;i<=n;i++)
	{
		cin>>g[i];
		maxn=(maxn,g[i]);
	}
	int p=s/maxn+1;
	//cout<<p<<endl;
	cout<<bs(0,p);
	return 0;
}

2023/4/22 16:01
加载中...