제출 #979167

#제출 시각아이디문제언어결과실행 시간메모리
979167vjudge1Self Study (JOI22_ho_t2)C++17
10 / 100
51 ms8532 KiB
#include<bits/stdc++.h> #define ft first #define sd second #define pb push_back #define nl "\n" #define int ll typedef long long ll; typedef long double ld; using namespace std; const int mod = 1e9 + 7; const int N = 2000; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T = 1; while(T--) { int n, m; cin >> n >> m; int a[n + 1], b[n + 1], mn = 1e18, mx = 0; for (int i = 1; i <= n; i++) { cin >> a[i]; mn = min( mn, a[i] * m); mx = max( mx, a[i] * m); } for (int i = 1; i <= n; i++) { cin >> b[i]; } if (m == 1) { int l = 1e18; for (int i = 1; i <= n; i++) { l = min( l, max(a[i], b[i])); } cout << l << nl; } else { int l = mn, r = mx + 1; while(l + 1 < r) { int mid = (l + r) / 2; int s = 0; for (int i = 1; i <= n; i++) { if (m >= mid / a[i]) { //s += ((a[i] * m - mid) / a[i]); s += m - mid / a[i]; if (mid % a[i] != 0) { s--; } } else { //s -= (mid - a[i] * m) / a[i]; s -= (mid / a[i] - m); } } if (s >= 0) { l = mid; } else { r = mid; } } cout << l << nl; } } }
#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...