제출 #803642

#제출 시각아이디문제언어결과실행 시간메모리
803642vjudge1Self Study (JOI22_ho_t2)C++14
0 / 100
1094 ms21424 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 ; 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 ; ll mid = (l + r) >> 1, 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}) ; } // cout << i << ' ' << mid << ' ' << num << '\n' ; if(num) { cnt = 1e18 ; break ; } } } if(cnt > m) 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...