Submission #1145878

#TimeUsernameProblemLanguageResultExecution timeMemory
1145878andrewpSelf Study (JOI22_ho_t2)C++20
0 / 100
1095 ms24500 KiB
//Dedicated to my love, ivaziva #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pii pair<int,int> #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define sz(a) ((int)a.size()) const int N=3e5+5; ll n, m; ll a[N], b[N]; bool check(ll mid) { vector<pair<ll, pair<ll, ll>>> v; for (ll i=1; i<=n; i++) { v.pb(make_pair(max(a[i], b[i]), make_pair(a[i], b[i]))); } sort(rall(v)); ll o=0; for (auto x:v) { ll mx=x.first, A=x.second.first, B=x.second.second; if (A>=B) { ll tr=min((mid+mx-1)/mx, m); if (tr*mx>=mid) { o+=(m-tr); } else { ll tr2=(mid-min((mid+mx-1)/mx, m)*mx+B-1)/B; if (tr2>o) return false; else o-=tr2; } } else { ll tr=min((mid+mx-1)/mx, o); if (tr*mx>=mid) { o+=m; } else { ll tr2=(mid-min((mid+mx-1)/mx, o)*mx+mx-1)/mx; if (tr2>m) return false; else o=m-tr2; } } } return true; } int main () { ios::sync_with_stdio(false), cin.tie(0); cin >> n >> m; for (ll i=1; i<=n; i++) cin >> a[i]; for (ll i=1; i<=n; i++) cin >> b[i]; ll lo=1, hi=(ll)(1e18), ans=0; while (lo<=hi) { ll mid=(lo+hi)/2; if (check(mid)) { lo=mid+1; ans=mid; } else { hi=mid-1; } } cout << ans << '\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...