Submission #1018785

#TimeUsernameProblemLanguageResultExecution timeMemory
1018785vjudge1Self Study (JOI22_ho_t2)C++17
0 / 100
129 ms2792 KiB
#include "bits/stdc++.h"
using namespace std;
 
#define ar array
typedef long long ll;

//~ #define int ll

signed main() {
	ios::sync_with_stdio(0); cin.tie(0);
	
	int n, m; cin >> n >> m;
	
	vector<int> a(n), b(n);
	
	for(int i=0;i<n;i++){
		cin >> a[i];
	}
	
	for(int i=0;i<n;i++){
		cin >> b[i];
	}
	
	auto check = [&](ll p){
		ll t = 0;
		
		for(int i=0;i<n;i++){
			if(b[i] > a[i]){
				// не выгодно идти на лекции
				ll b_ = (p + b[i] - 1) / b[i];
				// нужно b_ времени чтобы понять на как минимум p
				t += b_;
			} else {
				if(a[i] * 1ll * m >= p){
					// выгодно идти на лекции, и лекций хватает чтобы понять на р
					ll a_ = (p + a[i] - 1) / a[i];
					// нужно а_ времеи чтобы понять на как минимум р
					
					t += a_;
				} else {
					// выгодно идти на лекции, но лекция не хватает чтобы понять на р
					ll a_ = m;
					ll b_ = (p - a[i] * 1ll * a_ + b[i] - 1) / b[i];
					
					t += a_ + b_;
				}
			}
		}
		
		if(t <= n * 1ll * m) return true;
		else return false;
	};
	
	ll l = 1, r = 1e18 + 1;
	while(r - l > 1){
		ll m = (l + r) >> 1;
		
		if(check(m)) l = m;
		else r = m;
	}
	
	if(check(r)) cout<<r<<"\n";
	else cout<<l<<"\n";
}


#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...