90分求助各位大佬,WA
查看原帖
90分求助各位大佬,WA
184526
litifeng楼主2021/1/12 13:00

用long long就有第1,2组过不了,改成unsigned long long就过了。 难道前两组数据有负值!!!

#include <cstdio>
using namespace std;
const int N=2e5+10;
typedef long long LL;//改为unsigned long long 就能过
LL s,l;
int n,h[N],d[N];
bool check(LL x){
	LL cnt=0;
	for(int i=0;i<n;i++){
		LL t=h[i]+d[i]*x;
		if(t>=l) cnt+=t;
		if(cnt>=s) break;
	}
	if(cnt>=s) return true;
	return false;
}
int main(){
	scanf("%d%lld%lld",&n,&s,&l);
	for(int i=0;i<n;i++) scanf("%d",&h[i]);
	for(int i=0;i<n;i++) scanf("%d",&d[i]);
	LL l=0,r=1e18;
	while(l<r){
		LL mid=(l+r)/2;
		if(check(mid)) r=mid;
		else l=mid+1;
	}
	printf("%lld\n",l);

	return 0;
}

拜托各位大佬,先谢谢!

2021/1/12 13:00
加载中...