제출 #702642

#제출 시각아이디문제언어결과실행 시간메모리
702642Chal1shkanSelf Study (JOI22_ho_t2)C++14
0 / 100
300 ms7404 KiB
# include <bits/stdc++.h>
 
# define pb push_back
# define ff first
# define ss second
# define nl "\n"
# define sz(x) ((int)(x).size())
# define deb(x) cerr << #x  << " = " << x << endl; 
 
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
 
const ll maxn = 3e5 + 25;
const ll inf = 2e9 + 0;
const ll mod = 998244353;
const ll dx[] = {-1, 1, 0, 0};
const ll dy[] = {0, 0, -1, 1};
 
using namespace std;

ll n, m;
pair <ll, ll> p[maxn];	

bool ok (ll x)
{
	ll cur = 0;
	for (ll i = 1; i <= n; ++i)
	{
		p[i].ff = max(p[i].ff, p[i].ss);
		if (m * p[i].ff >= x)
		{
			cur += (x + p[i].ff - 1) / p[i].ff;
		}
		else
		{
			cur += m + (x - p[i].ff * m + p[i].ss - 1) / p[i].ss;
		}
	}
	return (cur <= n * m);
}

void ma1n (/* SABR */)
{
	cin >> n >> m;
	for (ll i = 1; i <= n; ++i)
	{
		cin >> p[i].ff;
	}
	for (ll i = 1; i <= n; ++i)
	{
		cin >> p[i].ss;
	}
	ll l = 0, r = 1LL << 60, ans = 0;
	while (l <= r)
	{
		ll mid = (l + r) >> 1;
		if (ok(mid))
		{
			l = mid + 1;
			ans = mid;
		}
		else
		{
			r = mid - 1;
		}
	}
	cout << ans;
}
 
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
//    freopen("angry.in", "r", stdin);
//    freopen("angry.out", "w", stdout);
    int ttt = 1;
//  cin >> ttt;
    for (int test = 1; test <= ttt; ++test)
    {
//      cout << "Case " << test << ":" << ' ';
        ma1n();
    }
    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...