ffd0041023590c0e358c5449feece2ba7985454cbea1098cc06e4686da84aec4
// https://szkopul.edu.pl/problemset/problem/wo13yRw8_nKGgEjCxpM_DlK_/site/?key=statement
#include <bits/stdc++.h>
// #define GARY_DBG
#define GARY_LIB
constexpr int sizik = 1000 * 1001;
#define int int64_t
#define ar std::array
typedef std::vector<std::vector<int>> _kra;
int vals[sizik];
int n, m;
int pref_S[sizik];
namespace sol {
int candidates[sizik];
void query(int k) {
pref_S[0] = 0;
for (int i = 1; i <= n; i++) {
pref_S[i] = pref_S[i - 1] + (vals[i] - k);
}
int ans = 0;
int cand_cnt = 0;
candidates[cand_cnt++] = 0;
for (int i = 1; i <= n; ++i) {
if (pref_S[i] < pref_S[candidates[cand_cnt - 1]]) {
candidates[cand_cnt++] = i;
}
}
for (int j = n; j >= 1; j--) {
while (cand_cnt > 0 && pref_S[j] >= pref_S[candidates[cand_cnt - 1]]) {
int i = candidates[cand_cnt - 1];
ans = std::max(ans, j - i);
cand_cnt--;
}
}
std::cout << ans << " ";
}
} // namespace sol
void solve() {
std::cin >> n >> m;
for (int i = 1; i <= n; i++) {
std::cin >> vals[i];
}
for (int i = 0; i < m; i++) {
int a;
std::cin >> a;
sol::query(a);
}
std::cout << '\n';
}
int32_t main() {
#ifndef GARY_DBG
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
#endif
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}