#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define pb push_back
#define int long long
#define fi first
#define se second
const int N = 3e5 + 5, M = 1e9 + 7, LG = 20;
int n , A[N] , B[N] , C[N] , m;
void solve(){
cin >> n >> m;
for (int i=1 ; i<=n ; i++){
cin >> A[i];
}
for (int i=1 ; i<=n ; i++){
cin >> B[i];
}
for (int i=1 ; i<=n ; i++){
A[i] = max(A[i] , B[i]);
}
int l=0 , r=1e18;
while(l+1 < r){
int mid = (l+r)>>1;
int ex = 0;
for (int i=1 ; i<=n ; i++){
int cr = (mid+A[i]-1)/A[i];
cr = min(cr , m);
ex += m-cr;
C[i] = mid - cr*A[i];
}
for (int i=1 ; i<=n ; i++){
if (C[i]<=0) continue;
int cr = (C[i]+B[i]-1)/B[i];
ex -= cr;
}
// cout << mid << ' ' << ex << endl;
if (ex >= 0){
l = mid;
}else{
r = mid;
}
}
cout << l << endl;
}
signed main(){
// freopen("" , "r" , stdin);
// freopen("" , "w" , stdout);
// cout << setprecision(30);
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int ts = 1;
// cin >> ts;
while(ts--){
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... |