不知道哪里错了
查看原帖
不知道哪里错了
870619
Young2011楼主2023/2/18 11:49
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long;

const int maxn=3e5+10;
int n,m;
int a[maxn],b[maxn];
int ke(int lm,int sum){
	if(sum%lm) return sum/lm+1;
	return sum/lm;
}
bool check(int lm) {
	int num = 0;
	for (int i=1;i<=n;i++){
		int now;
		if(m*max(a[i],b[i])<lm) num+=m,now=lm-m*max(a[i],b[i]);
		else num+=ke(max(a[i],b[i]),lm),now=0;
		num+=ke(b[i],now);
	}
	return num<=n*m;
}
signed main(){
	cin>>n>>m;
	int l = 1 , r=1e18;
	for(int i = 1; i <= n; i ++ ){
		cin>>a[i];
	}
	for(int i = 1; i <= n; i ++ ){
		cin>>b[i];
	}
	while(l<=r){
		int mid = (l+r)/2;
		if (check(mid)) l = mid+1;
		else r = mid-1;
	}
	cout<<r<<endl;
	return 0;
}
2023/2/18 11:49
加载中...