제출 #811001

#제출 시각아이디문제언어결과실행 시간메모리
811001tkwiatkowskiSelf Study (JOI22_ho_t2)C++17
100 / 100
322 ms9168 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); if (cnt > (long long)n * m) return false; } return true; } 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...