Submission #803650

#TimeUsernameProblemLanguageResultExecution timeMemory
803650vjudge1Self Study (JOI22_ho_t2)C++14
0 / 100
1080 ms21372 KiB
#include<bits/stdc++.h> #define fi first #define se second #define ll long long using namespace std ; const ll N = 3e5 ; ll n, m, l = 0, r = 1e18, a[N + 1], b[N + 1] ; set<pair<ll, ll>> s, s1, s2, s3 ; signed main() { ios_base::sync_with_stdio( 0 ) ; cin.tie( 0 ) ; cout.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] ; if(b[i] >= a[i]) s.insert({m, i}) ; else s2.insert({m, i}) ; } while(l + 1 < r) { s1 = s ; s3 = s2 ; ll mid = (l + r) >> 1 ; bool cnt = 0 ; for(int i = 1 ; i <= n ; i++) if(a[i] > b[i]) { } else { ll num = (mid + b[i] - 1) / b[i] ; while(s1.size() && num) { pair<ll, ll> p = (*s1.rbegin()) ; s1.erase(p) ; ll abu = min(num, p.fi) ; num -= abu ; p.fi -= abu ; if(p.fi) s1.insert({p.fi, p.se}) ; } if(num) { if(!s3.size()) { cnt = 1 ; break ; } } } if(cnt) r = mid ; else l = mid ; } cout << l ; 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...