Submission #734418

#TimeUsernameProblemLanguageResultExecution timeMemory
734418JosiaSelf Study (JOI22_ho_t2)C++17
100 / 100
385 ms11580 KiB
#include <bits/stdc++.h> using namespace std; #define int uint64_t int n, m; bool check(int pos, vector<int>&a, vector<int>&b) { int free = 0; int req = 0; for (int i=0; i<n; i++) { int thisNeedsFromA = (pos+a[i]-1)/a[i]; if (thisNeedsFromA <= m) { free += m-thisNeedsFromA; } else { req += (pos-a[i]*m + b[i]-1)/b[i]; } } return free >= req; } signed main() { cin.tie(0); ios_base::sync_with_stdio(0); cin >> n >> m; vector<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]; for (int i = 0; i<n; i++) a[i] = max(a[i], b[i]); int l = 0, r = 2e18; while (l < r) { int pos = l + (r-l+1) / 2; if (check(pos, a, b)) { l = pos; } else { r = pos-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...