Submission #1328604

#TimeUsernameProblemLanguageResultExecution timeMemory
1328604tomthuy123Self Study (JOI22_ho_t2)C++20
100 / 100
132 ms5132 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
using i128 = __int128_t;
const ll MOD = 1e9 + 7;

ll n,m;
vector<ll> Alst;
vector<ll> Blst;


bool check(ll x){
    i128 total=0;
	for(ll i=0;i<n;i++){
		if(Alst[i]<Blst[i]){
			total+=(x+Blst[i]-1)/Blst[i];
		}
		else{
			if(x<=m*Alst[i]){
				total+=(x+Alst[i]-1)/Alst[i];
			}
			else{
				total+=m;
				total+=((x-m*Alst[i])+Blst[i]-1)/Blst[i];
			}
		}
	}
	return total<=n*m;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
	
	
	cin >> n >> m;
	Alst.resize(n);
	Blst.resize(n);
	for(ll i=0;i<n;i++){
		cin >> Alst[i];
	}
	for(ll i=0;i<n;i++){
		cin >> Blst[i];
	}
	ll L=1;
	ll R=1e18;
	ll ans;
	while(L<=R){
		ll mid=L+(R-L)/2;
		if(check(mid)){
			L=mid+1;
			ans=mid;
		}
		else{
			R=mid-1;
		}
	}
	cout << ans;
}
#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...