#include<bits/stdc++.h>
using namespace std;
#define int long long
#define oo 10000000000000001
int n,m,a[300005],b[300005],l=oo,r,x,jump;
bool psb(int X){
int cnt=0;
for(int i=1;i<=n;i++){
if(a[i]*m>=X) cnt+=X/a[i]+((X%a[i])?1:0);
else cnt+=m+(X-m*a[i])/b[i]+(((X-m*a[i])%b[i])?1:0);
if(cnt>m*n) return 0;
}
return 1;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0);
cin>>n>>m;
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]);
}
for(int i=1;i<=n;i++){
r+=a[i];
l=min(a[i],l);
}
l*=m;
r=r*m/n+1;
x=l;
int jump=r-l;
if(psb(r)){
cout<<r<<'\n';
return 0;
}
while(jump){
while(psb(x+jump)) x+=jump;
jump/=2;
}
cout<<x<<'\n';
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... |