#include <bits/stdc++.h>
using namespace std;
#define int long long
int const N=3e5+10;
int n,m;
int a[N],b[N];
bool check(int vl)
{
int le=n*m;
int tot=0;
for (int i=0;i<n;i++)
{
int mx=max(a[i],b[i]);
int f=(vl+mx-1)/mx;
f=min(f,m);
int z=max(0ll,vl-f*mx);
int g=(z+b[i]-1)/b[i];
le-=(f+g);
if (le<0)
return 0;
}
return 1;
}
inline void solve()
{
cin>>n>>m;
for (int i=0;i<n;i++)
cin>>a[i];
for (int i=0;i<n;i++)
cin>>b[i];
int st=0,en=1e18+10;
while (st+1<en)
{
int mid=(st+en)/2;
if (check(mid))
st=mid;
else
en=mid;
}
cout<<st<<endl;
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
// cin>>t;
for (int i=1;i<=t;i++)
{
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... |