#include <bits/stdc++.h>
using namespace std;
const int max_n = 1000 * 1000;
int a[max_n];
long long sum[max_n];
int dp1[max_n], dp2[max_n];
long long get(int l, int r) {
  if (l > r) return 0;
  return sum[r] - (l ? sum[l - 1] : 0);
}
int main() {
  int n, q;
  scanf("%d%d", &n, &q);
  for (int i = 0; i < (n); i++) scanf("%d", &a[i]);
  for (int i = 0; i < (n); i++) sum[i] = (i ? sum[i - 1] : i) + a[i];
  while (q--) {
    long long b;
    cin >> b;
    int r = n - 1;
    long long s = 0;
    for (int i = (n - 1); i >= 0; i--) {
      s += a[i];
      while (s > b) s -= a[r--];
      if (get(i, n - 1) < b) {
        dp1[i] = n;
        dp2[i] = 1;
      } else {
        dp1[i] = (r + 1 < n && dp1[r + 1] != n ? dp1[r + 1] : r);
        dp2[i] = (r + 1 < n && dp1[r + 1] != n ? dp2[r + 1] : 0) + 1;
      }
    }
    int ans = n;
    for (int i = 0; i < (n); i++) {
      if (get(0, i - 1) > b) break;
      long long rem = get(0, i - 1) + get(dp1[i] + 1, n - 1);
      int cnt = dp2[i] + (rem + b - 1) / b;
      ans = min(cnt, ans);
    }
    cout << ans << endl;
  }
  return 0;
}
