#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ar array
#define all(v) begin(v), end(v)
#define allr(v) rbegin(v), rend(v)
#define pb push_back
const int INF = 1e10;
void solve() {
int n, m; cin >> n >> m;
vector<int> a(n), b(n);
for (int &x : a) cin >> x;
for (int &x : b) cin >> x;
for (int i = 0; i < n; i++) a[i] = max(a[i], b[i]);
auto joke = [&](int ans)->bool {
int cnt = 0;
for (int i = 0; i < n; i++) {
if (ans < a[i]*m) cnt += (ans + a[i] - 1) / a[i];
else cnt += m + (ans - a[i]*m + b[i] - 1) / b[i];
}
return cnt <= m*n;
};
int l = 0, r = 1e18+1;
int ans = 0;
while (r-l > 1) {
int mid = (l+r)/2;
if (joke(mid)) l = mid;
else r = mid;
}
cout << l << '\n';
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int t = 1; //cin >> t;
while (t--) {
solve();
}
}
# | 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... |