This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#define INF 2e18
using namespace std;
typedef long long ll;
ll a[300005], b[300005];
void solve()
{
	ll n, m; cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i];
	for (int i = 1; i <= n; i++) cin >> b[i];
	ll lo = 0; ll hi = INF;
	while (lo < hi) {
		ll mid = (lo + hi + 1) / 2;
		ll sum = 0;
		for (int i = 1; i <= n; i++) {
			if (b[i] >= a[i]) sum += (mid - 1) / b[i] + 1;
			else if (mid <= a[i] * m) sum += (mid - 1) / a[i] + 1;
			else sum += m + (mid - a[i] * m - 1) / b[i] + 1;
			if (sum > INF) break;
		}
		if (sum > n * m)hi = mid - 1;
		else lo = mid;
	}
	cout << lo << "\n";
}
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int t = 1;// cin>>t;
	while (t--) solve();
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |