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 <iostream>
#include <vector>
using namespace std;
using ll = long long;
const ll MAX_NUM = 1e9 * 1e9;
ll N, M;
vector<int> a;
vector<int> b;
inline bool ifEnoughCourses(const ll passline, ll courses) {
for(int i = 0; i < N; i++) {
if(b[i] >= a[i]) {
courses -= (passline + b[i] - 1) / b[i];
} else {
if((passline + a[i] - 1) / a[i] <= M) {
courses -= (passline + a[i] - 1) / a[i];
} else {
courses -= M + ((passline - M * a[i]) + b[i] - 1) / b[i];
}
}
if(courses < 0) return false;
}
return true;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N >> M;
ll courses = N * M;
a.resize(N);
b.resize(N);
for(int &i : a) cin >> i;
for(int &i : b) cin >> i;
ll l = 1, r = MAX_NUM;
while(l < r) {
ll mid = (l + r) / 2 + 1;
if(ifEnoughCourses(mid, courses)) l = mid;
else r = mid - 1;
}
cout << l << '\n';
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... |