Submission #1154089

#TimeUsernameProblemLanguageResultExecution timeMemory
1154089KK_1729Self Study (JOI22_ho_t2)C++17
100 / 100
154 ms5096 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define FOR(i,a,b) for (int i = (a); i < (b); ++i) #define pb push_back #define all(a) a.begin(), a.end() #define endl "\n" void printVector(vector<int> a){ for (auto x: a) cout << x << " "; cout << endl; } void solve(){ int n, m; cin >> n >> m; vector<int> a(n); FOR(i,0,n) cin >> a[i]; vector<int> b(n); FOR(i,0,n) cin >> b[i]; int l = 0; int r = 1e18; int ans = 0; int c = 0; while (l <= r){ if (l == r) c++; if (c > 2) break; int mid = (l+r)/2ll; int tot = 0ll; bool can = true; FOR(i,0,n){ int curr = 0; if (a[i] > b[i]){ if (m*a[i] < mid){ int u = mid-m*a[i]; curr += m; curr += (u+b[i]-1)/b[i]; }else{ curr += (mid+a[i]-1)/a[i]; } }else{ curr += (mid+b[i]-1)/b[i]; } tot += curr; if (tot > n*m){ can = false; break; } } if (tot <= n*m && can){ ans = max(ans, mid); if (l+1ll == r){ l = r; }else{ l = mid; } }else{ if (l+1 == r){ ans = l; break; } r = mid; } } cout << ans << endl; } int32_t main(){ ios::sync_with_stdio(false);cin.tie(nullptr); int t = 1; // cin >> t; while (t--) solve(); }
#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...