Submission #1264416

#TimeUsernameProblemLanguageResultExecution timeMemory
1264416kustov_vadim_533Self Study (JOI22_ho_t2)C++20
100 / 100
141 ms5096 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

#define len(v) (int)((v).size())

const int inf = 1e9;

inline void solve(){
	ll n, m;
	cin >> n >> m;

	vector<ll> a(n);
	for (int i = 0; i < n; ++i){
		cin >> a[i];
	}

	vector<ll> b(n);
	for (int i = 0; i < n; ++i){
		cin >> b[i];
	}

	for (int i = 0; i < n; ++i){
		a[i] = max(a[i], b[i]);
	}

	ll li = 0, ri = 2e18 + 7;
	while (ri - li > 1){
		ll mi = (li + ri) / 2;

		ll bl = n * m;
		for (int i = 0; i < n && bl >= 0; ++i){
			ll us = min(m, (mi + a[i] - 1) / a[i]);
			ll rm = max(0ll, mi - us * a[i]);
			bl -= us;
			bl -= (rm + b[i] - 1) / b[i]; 
		}

		if (bl >= 0){
			li = mi;
		}
		else{
			ri = mi;
		}
	}

	cout << li << '\n';
}

signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cout.precision(60);

	int t = 1;
//	cin >> t;

	while (t--) {
		solve();
	}
}
#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...