Submission #862005

#TimeUsernameProblemLanguageResultExecution timeMemory
862005keaucucalSelf Study (JOI22_ho_t2)C++14
100 / 100
204 ms9172 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...