Submission #884644

#TimeUsernameProblemLanguageResultExecution timeMemory
884644EJIC_B_KEDAXSelf Study (JOI22_ho_t2)C++17
100 / 100
357 ms13956 KiB
#ifdef LOCAL //#define _GLIBCXX_DEBUG #endif #include <bits/stdc++.h> #include <random> #ifndef LOCAL //#pragma GCC optimize("O3") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") #pragma GCC target("avx,avx2,bmi,bmi2,popcnt,lzcnt") #endif using namespace std; using ll = long long; using ld = long double; #define x first #define y second #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() mt19937_64 mt(418); void solve(); void init(); int32_t main() { #ifndef LOCAL cin.tie(nullptr)->sync_with_stdio(false); #else freopen("input.txt", "r", stdin); #endif // srand(time(0)); init(); cout << fixed << setprecision(20); int t = 1; // cin >> t; while (t--) { solve(); } } void init() {} #define int ll void solve() { int n, m; 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]; } ll l = 0, r = 2e18; while (r - l > 1) { ll mid = (r + l) / 2; ll free = (ll)m * n; vector<ll> skill(n, 0); int ok = 1; for (int i = 0; i < n; i++) { if (a[i] > b[i]) { ll have = (mid + a[i] - 1) / a[i]; have = min(have, (ll)m); skill[i] += a[i] * have; free -= have; } } for (int i = 0; i < n; i++) { if (free < 0) { ok = 0; } ll need = mid - skill[i]; if (need > 0) { ll have = (need + b[i] - 1) / b[i]; skill[i] += b[i] * have; free -= have; } } if (free >= 0 && ok) { l = mid; } else { r = mid; } // cout << "!!! " << r << ' ' << l << '\n'; } cout << l << '\n'; }
#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...