Submission #1287254

#TimeUsernameProblemLanguageResultExecution timeMemory
1287254Jawad_Akbar_JJSelf Study (JOI22_ho_t2)C++20
100 / 100
275 ms13176 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; #define int long long const int N = 1<<19; int a[N], b[N]; vector<pair<int,int>> vec; bool Poss(int n, int m, int mn, int extra = 0){ for (auto [vl, id] : vec){ int v1 = (mn + a[id] - 1) / a[id], v2 = (mn - m * a[id] + b[id] - 1) / b[id]; if (v1 <= m) extra += m - v1; else if (v2 <= extra) extra -= v2; else return 0; } return 1; } signed main(){ int n, m; cin>>n>>m; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++){ cin>>b[i]; a[i] = max(a[i], b[i]); vec.push_back({a[i], i}); } sort(rbegin(vec), rend(vec)); int l = 0, r = 1.1e18; while (l + 1 < r){ int mid = (l + r) / 2; if (Poss(n, m, mid)) l = mid; else r = mid; } cout<<l<<endl; }
#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...