#include <bits/stdc++.h>   using namespace std;   inline int in() {     int x;     scanf( %d , &x);     return x;   }   const int N = 1e6 + 7;   int n, m, a[N], Q;   long long SUM, psr[N], psl[N];   int en[N], st[N];   pair<int, long long> dpl[N], dpr[N];   int solve(long long maax) {     if (maax >= SUM) return 1;     long long sum = 0, cur = 0;     for (int i = 0; i < n; i++) {       sum += a[i];       while (sum > maax) {         en[cur] = i - 1;         sum -= a[cur];         cur++;       }     }     while (cur < n) en[cur++] = n - 1;     sum = 0, cur = n - 1;     for (int i = n - 1; i >= 0; i--) {       sum += a[i];       while (sum > maax) {         st[cur] = i + 1;         sum -= a[cur];         cur--;       }     }     while (cur >= 0) st[cur--] = 0;     for (int i = 0; i < n; i++) {       if (st[i] == 0)         dpl[i] = {1, psl[i + 1]};       else         dpl[i] = dpl[st[i] - 1], dpl[i].first++;     }     for (int i = n - 1; i >= 0; --i) {       if (en[i] == n - 1)         dpr[i] = {1, psr[i]};       else         dpr[i] = dpr[en[i] + 1], dpr[i].first++;     }     int mn = dpr[0].first;     for (int i = 1; i < n; i++)       mn = min(mn, dpr[i].first + dpl[i - 1].first -                        ((dpr[i].second + dpl[i - 1].second) <= maax));     return mn;   }   int32_t main() {     n = in(), Q = in();     for (int i = 0; i < n; i++) {       a[i] = in();       SUM += a[i];       psl[i + 1] = a[i] + psl[i];     }     for (int i = n - 1; i >= 0; --i) psr[i] = psr[i + 1] + a[i];     while (Q--) {       long long x;       cin >> x;       cout << solve(x) <<   n ;     }   }   