#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define ertunt return
const int MOD = 998244353;
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
int main() {
ll n, m;
cin >> n >> m;
ll a[n], b[n];
for(ll i = 0; i < n; i++) cin >> a[i];
for(ll i = 0; i < n; i++) cin >> b[i];
ll l = 0,r = 1e18;
while(l < r){
ll mid = (l+r+1)/2;
vector<ll>v(n+1,mid);
ll left = n*m;
for(ll i = 0; i < n; i++){
ll cur = min((v[i]+max(a[i],b[i])-1)/max(a[i],b[i]),m);
left-=cur;
v[i]-=cur*max(a[i],b[i]);
}
for(ll i = 0;i < n; i++){
if(left<0)break;
if(v[i] > 0){
left-=(v[i]+b[i]-1)/b[i];
}
}
if(left < 0){
r = mid-1;
}
else l = mid;
}
cout << l;
}
# | 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... |