#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> ii;
const ll INF = 2e18;
const ll nx = 300005;
ll n, m, a[nx], b[nx], l, r, md;
bool check(){
ll minaction = 0;
for(int i=0; i<n; i++){
if(a[i]<=b[i]) minaction+=(md/b[i] + (md%b[i] ? 1 : 0));
else if(md<=a[i]*m) minaction+=(md/a[i] + (md%a[i] ? 1 : 0));
else{
minaction+=m;
ll temp = md-m*a[i];
minaction+=(temp/b[i] + (temp%b[i] ? 1 : 0));
}
if(minaction>n*m) return false;
}
return true;
}
int main(int argc, char **argv){
cin.tie(NULL)->sync_with_stdio(false);
cin >> n >> m;
for(int i=0; i<n; i++) cin >> a[i];
for(int i=0; i<n; i++) cin >> b[i];
l = 0, r = INF;
while(l<r){
md = (l+r)/2;
if(check()){
l = md+1;
} else r = md;
}
cout << l-1;
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... |