Submission #810984

#TimeUsernameProblemLanguageResultExecution timeMemory
810984tkwiatkowskiSelf Study (JOI22_ho_t2)C++17
0 / 100
427 ms8416 KiB
#include <iostream> #include <vector> using namespace std; bool check(long long min_lvl, int m, vector<int> &A, vector<int> &B) { long long cnt = 0; int n = A.size(); for (int i = 0; i < n; ++i) { int a = max(A[i], B[i]); int b = B[i]; long long curr_cnt = min((long long)m, (min_lvl + a - 1) / a); cnt += curr_cnt + max((long long)0, (min_lvl - curr_cnt * a + b - 1) / b); } return cnt <= (long long)n * m; } long long BS(int m, vector<int> &A, vector<int> &B) { long long lo = 0, hi = 1e18; while (lo < hi) { long long mid = (lo + hi + 1) / 2; if (check(mid, m, A, B)) lo = mid; else hi = mid - 1; } return lo; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; vector<int> A(n), B(n); for (auto &a : A) cin >> a; for (auto &b : B) cin >> b; cout << BS(m, A, B) << '\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...