#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define ll long long
ll b[300000];
ll a[300000];
ll n,m;
bool check(ll v)
{
ll av = 0;
for(int i = 0;i<n;i++)
{
ll cv = v;
if(m*a[i] < cv)
{
cv-=m*a[i];
av -= (cv+b[i]-1)/b[i];
}
else
{
av += m - (cv+a[i]-1)/a[i];
}
}
if(av >= 0)
{
return true;
}
return false;
}
int main()
{
cin>>n>>m;
for(int i =0 ;i<n;i++)
{
cin>>a[i];
}
for(int i =0;i<n;i++)
{
cin>>b[i];
a[i] = max(a[i],b[i]);
}
ll l = 0;
ll r = 9e18;
while(l+1 < r)
{
ll mid = (l+r)/2;
if(check(mid))
{
l = mid;
}
else
{
r = mid;
}
}
cout<<l;
}
# | 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... |