#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
//your code goes here
int n, m;
cin >> n >> m;
vector <int> arr = {};
vector <int> arr2 = {};
vector <int> arr3 = {};
for(int i = 0; i < n; i++) {
int num;
cin >> num;
arr.push_back(num);
}
for(int i = 0; i < n; i++) {
int num;
cin >> num;
arr2.push_back(num);
}
for(int i = 0; i < n; i++) {
int v = max(arr[i], arr2[i]);
int v2 = v*m;
arr3.push_back(v2);
}
int ans = 0;
int lo = 0;
int hi = 1e18;
while(lo <= hi) {
int mid = (lo+hi)/2;
int total = 0;
for(int i = 0; i < n; i++) {
int v = arr3[i];
int v2 = mid-v;
int v3 = arr[i];
int v4 = arr2[i];
if(v2 == 0) {
continue;
}
if(v2 > 0) {
int v5 = (v2/v4);
if((v2%v4) != 0) {
// if(mid == 18) {
// cout << v5 << " " << total << endl;
// }
v5++;
}
total += v5;
} else {
int v5 = abs(v2)/max(v3, v4);
total -= v5;
}
}
if(total <= 0) {
ans = max(ans, mid);
lo = mid+1;
} else {
hi = mid-1;
}
}
int minv = 1e18;
for(int i = 0; i < n; i++) {
int v = max(arr[i], arr2[i]);
minv = min(minv, v);
}
if(m == 1) {
if(ans <= minv) {
cout << ans << endl;
} else {
cout << minv << endl;
}
} else {
cout << ans << endl;
}
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... |