#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll N, M;
ll A[300005], B[300005];
ll ceilD(ll a, ll b) {
if (a % b == 0) {
return a / b;
}
return (a / b) + 1LL;
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> N >> M;
for (int i = 1; i <= N; i++) cin >> A[i];
for (int i = 1; i <= N; i++) cin >> B[i], A[i] = max(A[i], B[i]);
ll l = 1, r = 1e18;
while (l <= r) {
ll mid = (l + r) >> 1;
ll hp = mid;
ll X = 0, Y = 0;
ll cnt = 0;
for (int i = 1; i <= N; i++) {
ll m = ceilD(mid, A[i]);
if (m <= M) {
cnt += m;
} else {
hp = mid - A[i] * M;
cnt += M + ceilD(hp, B[i]);
}
if (cnt > N * M) break;
}
if ((cnt <= N * M)) {
l = mid + 1;
} else {
r = mid - 1;
}
}
cout << r;
}
| # | 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... |