This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define ar array
#define ld long double
const int N = 2000, MOD = 1e9 + 7, INF = 1e17;
signed main(){ios::sync_with_stdio(false);cin.tie(0);
int n, m;
cin>>n>>m;
int A[n], B[n];
for(int i = 0;i<n;i++)cin>>A[i];
for(int i =0;i<n;i++)cin>>B[i], A[i] = max(A[i], B[i]);
auto check = [&](int t){
int cnt = 0;
for(int i = 0;i<n;i++){
if(A[i] * m >= t)cnt += (t - 1) / A[i] + 1;
else cnt += (m + 1 + (t - m * A[i] - 1) / B[i]);
if(cnt > n * m)break;
}
return cnt <= n * m;
};
int lo = 0;
int hi = 1e18;
int ans = 0;
while(lo <= hi){
int mid = (lo + hi) / 2;
if(check(mid)){
ans = mid;
lo = mid + 1;
}else hi = mid - 1;
}
cout<<ans;
}
# | 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... |