#include <bits/stdc++.h>
#define int long long
using namespace std;
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
void solve() {
int n,M;cin>>n>>M;
vector<int> a(n);
vector<int> b(n);
L(i,0,n-1)cin>>a[i];
L(i,0,n-1)cin>>b[i];
L(i,0,n-1)a[i]=max(a[i],b[i]);
auto testa=[&](int m)->bool{
int saldo=0;
L(i,0,n-1){
int at=(m+a[i]-1)/a[i];
if(at<=M){
saldo+=M-at;
}
else{
int x=m-a[i]*M;
saldo-=(x+b[i]-1)/b[i];
}
}
return saldo>=0;
};
int l=0;
int r=1e18;
int ans=0;
while(l<=r){
int m=(l+r)/2;
if(testa(m)){
ans=m;
l=m+1;
}
else r=m-1;
}
cout<<ans<<"\n";
}
int32_t main() {
std::cin.tie(0)->sync_with_stdio(0);
std::cin.exceptions(std::cin.failbit);
int T = 1;
// std::cin >> T;
while(T--) {
solve();
}
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... |