#include <cstdio>
#include <iostream>
#define ll long long
// using namespace std;
unsigned ll n, s, l, a[200005], h[200005];
ll left, right, mid, ans;
void init() {
// scanf("%lld %lld %lld", &n, &s, &l);
std::cin >> n >> s >> l;
for (int i = 1; i <= n; i++)
scanf("%lld", &h[i]);
for (int i = 1; i <= n; i++)
scanf("%lld", &a[i]);
return;
}
bool check(ll num) {
unsigned ll sum = 0;
for (int i = 1; i <= n; i++) {
if (h[i] + a[i] * num >= l)
sum += h[i] + a[i] * num;
if (sum >= s)
break;
}
if (sum >= s)
return 1;
return 0;
}
int main() {
init();
left = 0, right = 1000000000000000000ll;
while (left <= right) {
mid = (left + right) >> 1;
if (check(mid))
right = mid - 1, ans = mid;
else
left = mid + 1;
}
std::cout << ans;
return 0;
}
AC Code