Submission #545588

#TimeUsernameProblemLanguageResultExecution timeMemory
545588aryan12Self Study (JOI22_ho_t2)C++17
0 / 100
309 ms10904 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count());

int n, m;
vector<int> a, b;

bool Check(int value) {
	int temp = 0;
	for(int i = 1; i <= n; i++) {
		int credits = a[i] * m;
		if(credits >= value) {
			temp += (credits - value) / a[i]; //free courses you can take
		}
		else {
			temp -= (value - credits + b[i] - 1) / b[i]; //number of courses you need to take
		}
	}
	if(temp >= 0)
		return true;
	return false;
}

void Solve() {
	cin >> n >> m;
	a.resize(n + 1);
	b.resize(n + 1);
	for(int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	for(int i = 1; i <= n; i++) {
		cin >> b[i];
	}
	for(int i = 1; i <= n; i++) {
		a[i] = max(a[i], b[i]);
	}
	int l = 0, r = 1e18;
	int ans = 0;
	while(l <= r) {
		int mid = (l + r) >> 1;
		if(Check(mid)) {
			ans = mid;
			l = mid + 1;
		}
		else {
			r = mid - 1;
		}
	}
	cout << ans << "\n";
}

int32_t main() {
	auto begin = std::chrono::high_resolution_clock::now();
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int t = 1;
	//cin >> t;
	while(t--) {
		Solve();
	}
	auto end = std::chrono::high_resolution_clock::now();
    auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
    cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; 
	return 0;
}
#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...