Submission #766711

#TimeUsernameProblemLanguageResultExecution timeMemory
766711raysh07Self Study (JOI22_ho_t2)C++17
0 / 100
502 ms5020 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF (int)1e18 #define f first #define s second mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); void Solve() { int n, m; cin >> n >> m; vector <int> a(n), b(n); for (auto &x : a) cin >> x; for (auto &x : b) cin >> x; int l = 0, r = INF; while (r != l){ int mid = (l + r + 1) / 2; int use = 0, need = 0; for (int i = 0; i < n; i++){ if (a[i] < b[i]) { need += (mid + b[i] - 1) / b[i]; continue; } int o = (mid + a[i] - 1) / a[i]; int o1 = 0; if (o > m){ o = m; int ex = mid - a[i] * o; o1 = (ex + b[i] - 1) / b[i]; } int ex = a[i] * o + b[i] * o1 - mid; int sw = ex / (a[i] - b[i]); assert(sw >= 0); if (sw > o) sw = o; o -= sw; o1 += sw; use += o; need += o1; } if (use + need > n * m) r = mid - 1; else l = mid; } cout << l << "\n"; } int32_t main() { auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; // cin >> t; for(int i = 1; i <= t; i++) { //cout << "Case #" << i << ": "; Solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\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...