#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
using namespace std;
int main()
{
ll n, m;
cin >> n >> m;
ll a[n + 5], b[n + 5];
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 = 0, r = 1e18;
ll need[n + 5];
while (l < r)
{
ll mid = (l + r + 1) / 2;
fill(need + 1, need + n + 1, mid);
ll left = 0;
for (ll i = 1; i <= n; i++)
{
ll x = min((need[i] + a[i] - 1) / a[i], m);
need[i] -= x * a[i];
left += m - x;
}
ll cur = 0;
bool ok = 1;
for (ll i = 1; i <= n; i++)
{
if (need[i] > 0)
{
cur += (need[i] + b[i] - 1) / b[i];
if (cur > left)
{
ok = 0;
break;
}
}
}
if (ok)
l = mid;
else
r = mid - 1;
}
cout << l;
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... |