제출 #1287306

#제출 시각아이디문제언어결과실행 시간메모리
1287306tunademayoSelf Study (JOI22_ho_t2)C++20
100 / 100
136 ms5268 KiB
#include<bits/stdc++.h>
using namespace std;

#define ll long long 
#pragma optimize ("trapv")

const bool Multitest = 0;

const int N = 3e5 + 10;

ll a[N], b[N]; ll n, m;

bool check(ll val)
{
	ll ans = 0;
	
	for(int i = 1 ; i <= n ; i++)
	{
		if(a[i] > b[i])
		{
			ll p = (val + a[i] - 1) / a[i];
			p = min(p, m);
			
			if(p * a[i] < val)
			{
				p += (val - p * a[i] + b[i] - 1) / b[i];
			}
			ans += p;
		}
		else 
		{
			ans += (val + b[i] - 1) / b[i];
		}
		
		if(ans > 1ll * n * m) break;
	}
	
	return ans <= 1ll * n * m;	 	
}

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 = 2e18, pos = -1;
//	
//	cout << check(7) << '\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...