c++90分求调(必关)
查看原帖
c++90分求调(必关)
1703848
usuji1de楼主2025/8/5 10:45
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,k,s,c,sn,b[200001],a[200001];
bool ch(unsigned long long x){
	sn=0;
	for(unsigned long long i=1;i<=n;i++){
		unsigned long long h=1ULL*a[i]+x*b[i];
		if(h>=k)sn=sn+h;
		if(sn>=s)return 1;
	}
	return 0;
}
int main(){
	cin>>n>>s>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	unsigned long long l,h;
	l=1;
	h=max(s,k);
	while(l<h){
		unsigned long long m=(l+h)>>1;
		
		if(ch(m)){
			h=m;	
			c=m;
		}
		else{
			l=m+1;
		}
	}
	cout<<c;
	return 0;
}
2025/8/5 10:45
加载中...