제출 #1243533

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

long long n, m;
long long a[300007];
long long b[300007];

bool spr(long long sr)
{
	long long all = 0;
	for(int i = 0; i < n; i++)
	{
		if(a[i] > b[i])
		{
			long long temp = min((sr + a[i] - 1) / a[i], m);
			//cout << temp << " " << ceil(double(max(sr - temp * a[i], (long long)0)) / double(b[i])) << endl;
			all += temp;
			all += (max(sr - temp * a[i], (long long)0) + b[i] - 1) / b[i];
		}
		else
		{
			all += (sr + b[i] - 1) / b[i];
			//cout << ceil(double(sr) / double(b[i])) << endl;
		}
	}
	if(all > n * m)
	{
		return false;
	}
	return true;
}

int main()
{
	cin >> n >> m;
	for(int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	for(int i = 0; i < n; i++)
	{
		cin >> b[i];
	}
	long long l = 0, r = 1000000000000000001, odp = 0;
	//cout << spr(18) << endl;
	while(l <= r)
	{
		long long sr = (l + r) / 2;
		if(spr(sr))
		{
			odp = sr;
			l = sr + 1;
		}
		else
		{
			r = sr - 1;
		}
	}
	cout << odp << endl;
	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...