T328098 [基础训练营-后期-第二周-T2] 且听风吟
作者:
ljw11
,
2023-05-20 17:21:12
,
所有人可见
,
阅读 141
// Problem: T328098 [基础训练营-后期-第二周-T2] 且听风吟
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/T328098
// Memory Limit: 128 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
ll a[N], b[N];
ll n, k;
bool cmp(ll a, ll b)
{
return a > b;
}
bool check(ll mid)
{
ll ans = 0;
for (int i = 0; i < n; i++)
{
ll p = mid / b[i];
//把第i个风之领域操作j次之后得到的法力值
// a[i] - p
// p = a[i] - j
// a[i] - (a[i] - j)
if (p < a[i]) ans += a[i] - p;
}
return ans <= k;
}
int main()
{
scanf("%lld%lld", &n, &k);
for (int i = 0; i < n; i++) scanf("%lld", &a[i]);
for (int i = 0; i < n; i++) scanf("%lld", &b[i]);
sort(a, a + n);
sort(b, b + n, cmp);
ll l = 0, r = a[n - 1] * b[0];
while (l < r)
{
ll mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
printf("%lld", l);
return 0;
}