#include<bits/stdc++.h>
using namespace std;
#define ll long long
#pragma optimize ("trapv")
const bool Multitest = 0;
const int N = 3e5 + 10;
ll a[N], b[N]; ll n, m;
bool check(ll val)
{
ll ans = 0;
for(int i = 1 ; i <= n ; i++)
{
if(a[i] > b[i])
{
ll p = (val + a[i] - 1) / a[i];
p = min(p, m);
if(p * a[i] < val)
{
p += (val - p * a[i] + b[i] - 1) / b[i];
}
ans += p;
}
else
{
ans += (val + b[i] - 1) / b[i];
}
}
return ans <= 1ll * n * m;
}
void work()
{
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 = 2e18, pos = -1;
//
// cout << check(7) << '\n';
//
// return;
while(l <= r)
{
ll mid = (l + r) >> 1;
if(check(mid)) l = mid + 1, pos = mid;
else r = mid - 1;
}
cout << pos;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int q = 1;
if(Multitest) cin >> q;
while(q--) work();
}
| # | 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... |