Submission #1253269

#TimeUsernameProblemLanguageResultExecution timeMemory
1253269DangKhoizzzzSelf Study (JOI22_ho_t2)C++17
10 / 100
43 ms5008 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define pii pair <int , int> #define arr3 array <int , 3> using namespace std; const int INF = 1e18; const int maxn = 1e6 + 7; int n , m , a[maxn] , b[maxn]; bool check(int mid) { int cnt = 0; int tot = n*m; for(int i = 1; i <= n; i++) { if(a[i] > b[i]) { int c1 = min(m , (mid - 1)/a[i] + 1); tot -= c1; if(c1*a[i] < mid) cnt += (mid - c1*a[i] - 1)/b[i] + 1; } else cnt += (mid-1)/b[i] + 1; } return (cnt <= tot); } void solve() { cin >> n >> m; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= n; i++) cin >> b[i]; if(m == 1) { int ans = INF; for(int i = 1; i <= n; i++) ans = min(ans , max(a[i] , b[i])); cout << ans << '\n'; return; } int l = 1 , r = 1e18+2 , ans = 0; while(l <= r) { int mid = (l+r)/2; if(check(mid)) { ans = mid; l = mid + 1; } else r = mid - 1; } cout << ans << '\n'; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); 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...