#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int nmax = 1e6 + 5;
int n, q, h[nmax], p[nmax], sz[nmax], pos[nmax];
pair <int, int> qs[nmax];
bool dd[nmax];
ll cur, ans[nmax];
void init() {
for (int i=1; i<=n; i++) {
p[i] = i;
sz[i] = 1;
}
}
int root(int u) {
if (u==p[u]) return u;
return p[u] = root(p[u]);
}
void join(int u, int v) {
u = root(u), v = root(v);
if (u==v) return;
if (sz[u]<sz[v]) swap(u, v);
p[v] = u;
sz[u] += sz[v];
}
ll cal(int len) {
return 1LL * len * (len + 1) / 2;
}
bool cmp(int i, int j) {
return h[i] < h[j];
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> q;
for (int i=1; i<=n; i++)
cin >> h[i];
for (int i=1; i<=q; i++) {
int y; cin >> y;
qs[i] = {y, i};
}
for (int i=1; i<=n; i++)
pos[i] = i;
sort(pos + 1, pos + 1 + n, cmp);
sort(qs + 1, qs + 1 + q);
init();
cur = 0;
int ptr = 1;
for (int i=1; i<=q; i++) {
auto [y, id] = qs[i];
while (ptr<=n && h[pos[ptr]]<=y) {
int jojo = pos[ptr++];
dd[jojo] = true;
cur++;
if (jojo>1 && dd[jojo - 1]) {
int u = root(jojo), v = root(jojo - 1);
cur += cal(sz[u] + sz[v]) - cal(sz[u]) - cal(sz[v]);
join(u, v);
}
if (jojo<n && dd[jojo + 1]) {
int u = root(jojo), v = root(jojo + 1);
cur += cal(sz[u] + sz[v]) - cal(sz[u]) - cal(sz[v]);
join(u, v);
}
}
ans[id] = cur;
}
for (int i=1; i<=q; i++)
cout << ans[i] << '\n';
return 0;
}