求助!每个subtask只wa一两个点
查看原帖
求助!每个subtask只wa一两个点
483252
罗小菜楼主2023/10/20 22:15

如题,改了unsigned long long 也没过

#include<cstdio>
#include<iostream>
using namespace std;
const int MAXN=6e5+10;
#define int unsigned long long
int a[MAXN],b[MAXN];
int n,m;
inline bool check(int x)
{
	long long tot=0;
	for(int i=1;i<=n;i++)
	{
		int now=max(a[i],b[i]);
		if(now*m>=x)
		{
			int y=m-(x%now==0?x/now:x/now+1);
			tot+=y;
		}
		else
		{
			int nt=x-now*m;
			int y=(nt%b[i]==0?nt/b[i]:nt/b[i]+1);
			tot-=y;
		}
	}
	return tot>=0;
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	int l=1,r=2e18;
	while(l<r)
	{
		int mid=(l+r)/2;
		if(check(mid)) l=mid+1;
		else r=mid;
	}
	cout<<l-1;
	return 0;
}
2023/10/20 22:15
加载中...