Submission #1182582

#TimeUsernameProblemLanguageResultExecution timeMemory
1182582PieArmySelf Study (JOI22_ho_t2)C++20
100 / 100
86 ms4936 KiB
#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
using namespace std;

ll n,m;
ll a[300023],b[300023];

bool f(ll x){
	__int128_t ek=0;
	for(int i=1;i<=n;i++){
		if(m*a[i]==x)continue;
		if(m*a[i]>x){
			ek+=m-1;
			ek-=(x-1)/a[i];
		}
		else{
			if(((x-m*a[i]-1)/b[i])>n*m)return false;
			ek-=(x-m*a[i]-1)/b[i]+1;
		}
	}
	return (ek>=0);
}

int main(){
	ios_base::sync_with_stdio(false);cin.tie(NULL);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		cin>>b[i];
		a[i]=max(a[i],b[i]);
	}
	ll l=1,r=m*1000000000ll;
	while(l<r){
		ll mi=(l+r+1)>>1;
		if(f(mi))l=mi;
		else r=mi-1;
	}
	cout<<max(min(max(min(l,r),min(l,r)),max(min(l,r),min(l,r))),min(max(min(l,r),min(l,r)),max(min(l,r),min(l,r))));
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...