제출 #1287269

#제출 시각아이디문제언어결과실행 시간메모리
1287269tunademayoSelf Study (JOI22_ho_t2)C++20
0 / 100
1 ms572 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const bool Multitest = 0; const int N = 3e5 + 10; ll a[N], b[N]; int n, m; bool check(ll val) { ll cnt = 0; for(int i = 1 ; i <= n ; i++) { if(a[i] < b[i]) { if(b[i] * n < val) return 0; int l = 0, r = n, pos = -1; while(l <= r) { int mid = (l + r) >> 1; if(a[i] * mid + b[i] * (n - mid) >= val) l = mid + 1, pos = mid; else r = mid - 1; } if(pos == -1) return 0; cnt += pos; } } for(int i = 1 ; i <= n ; i++) { if(a[i] < b[i]) continue; if(a[i] * n > val) { int l = 1, r = n, pos = 0; while(l <= r) { int mid = (l + r) >> 1; if(a[i] * mid >= val) l = mid + 1, pos = mid; else r = mid - 1; } cnt += pos; } else { int l = 1, r = n * m, pos = -1; while(l <= r) { int mid = (l + r) >> 1; if(a[i] * n + b[i] * mid >= pos) r = mid - 1, pos = mid; else l = mid + 1; } if(pos == -1) return 0; cnt -= pos; } } return cnt >= 0; } void work() { cin >> n >> m; for(int i = 1 ; i <= n ; i++) cin >> a[i]; for(int i = 1 ; i <= n ; i++) cin >> b[i]; ll l = 1, r = 1e18, pos = -1; // cout << check(18) << '\n'; // // return; // while(l <= r) { ll mid = (l + r) >> 1; if(check(mid)) l = mid + 1, pos = mid; else r = mid - 1; } cout << pos; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int q = 1; if(Multitest) cin >> q; while(q--) work(); }
#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...