제출 #527683

#제출 시각아이디문제언어결과실행 시간메모리
5276838e7Self Study (JOI22_ho_t2)C++17
100 / 100
236 ms9552 KiB
//Challenge: Accepted
#include <bits/stdc++.h>
using namespace std;
#ifdef zisk
void debug(){cout << endl;}
template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);}
template<class T> void pary(T l, T r) {
	while (l != r) cout << *l << " ", l++;
	cout << endl;
}
#else
#define debug(...) 0
#define pary(...) 0
#endif
#define ll long long
#define maxn 300005
#define pii pair<int, int>
#define ff first
#define ss second
#define io ios_base::sync_with_stdio(0);cin.tie(0);
ll a[maxn], b[maxn];
int main() {
	io
	ll n, m;
	cin >> n >> m;
	for (int i = 0;i < n;i++) cin >> a[i];
	for (int i = 0;i < n;i++) cin >> b[i];
	ll low = 0, up = 1LL<<60;
	while (low < up - 1) {
		ll mid = (low + up) / 2, cnt = 0;
		for (int i = 0;i < n;i++) {
			if (b[i] >= a[i]) cnt += (mid + b[i] - 1) / b[i];
			else {
				if (mid > m * a[i]) cnt += m + (mid - m*a[i] + b[i] - 1) / b[i];
				else cnt += (mid + a[i] - 1) / a[i];
			}
			if (cnt > n * m) break;
		}
		if (cnt > n * m) up = mid;
		else low = mid;
	}
	cout << low << endl;
	
}
#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...