#include <bits/stdc++.h>
int n, k;
long long int A[121212];
long long int B[121212];
int f(long long int x) {
  int i;
  long long int res;
  res = 0;
  for (i = 0; i < n; i++) {
    if (A[i] * x >= B[i]) {
      res += A[i] * x - B[i];
    }
    if (res - k > 0) return 0;
  }
  return 1;
}
int main() {
  long long int s, e;
  int i, j;
  int ans = 0;
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) {
    scanf("%lld", &A[i]);
  }
  for (i = 0; i < n; i++) {
    scanf("%lld", &B[i]);
  }
  s = 0;
  e = 2000000000;
  while (s <= e) {
    long long int mid = (s + e) / 2;
    int kk = f(mid);
    if (kk) {
      ans = mid;
      s = mid + 1;
    } else {
      e = mid - 1;
    }
  }
  printf("%d", ans);
  return 0;
}
