#include<bits/stdc++.h>
typedef long long ll;
#define pii pair<ll, ll>
#define fi first
#define se second
#define endl '\n'
#define TASK ""
#define N 300005
#define LOG 17
using namespace std;
bool ghuy4g;
ll n, a[N], b[N], m;
bool check(ll mid) {
// trong M tiet
ll sum_thieu = 0, sum_thua = 0;
for (int i = 1; i <= n; i ++) {
if (max(a[i], b[i]) * m >= mid) {
ll need = (mid - 1) / max(a[i], b[i]) + 1;
sum_thua += m - need;
}
else {
ll thieu = mid - max(a[i], b[i]) * m;
ll need = (thieu - 1) / b[i] + 1;
sum_thieu += need;
}
}
if (sum_thieu > sum_thua) return 0;
return 1;
}
bool klinh;
signed main() {
// freopen("test.inp", "r", stdin);
//freopen("test.out", "w", stdout);
//srand(time(0));
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];
}
ll l = 1, r = 1e18, ans = -1;
while (l <= r) {
ll mid = (l + r) / 2;
if (check(mid)) {
ans = mid;
l = mid + 1;
}
else {
r = mid - 1;
}
}
cout << ans;
cerr << fabs(&klinh - &ghuy4g) / double(1024 * 1024);
}
| # | 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... |