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