#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
const int MAXN = 1e6 + 5;
int n, q;
int a[MAXN];
int b[MAXN];
int query[MAXN];
vector<pii> pos;
vector<pii> peal;
int sz[MAXN];
int par[MAXN];
int res = 0;
int ans[MAXN];
int tinh(int x)
{
return x * (x + 1) / 2;
}
void init()
{
for (int i = 1; i <= n; i++)
{
sz[i] = 1;
par[i] = i;
}
}
int findd(int u)
{
if (par[u] == u) return u;
return par[u] = findd(par[u]);
}
void join(int u, int v)
{
u = findd(u);
v = findd(v);
if (u == v) return;
par[v] = u;
res -= tinh(sz[u]) + tinh(sz[v]);
sz[u] += sz[v];
res += tinh(sz[u]);
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
b[i] = a[i];
}
sort(b + 1, b + n + 1);
for (int i = 1; i <= q; i++)
{
cin >> query[i];
peal.push_back({query[i], i});
}
for (int i = 1; i < n; i++)
{
pos.push_back({max(a[i], a[i + 1]), i});
}
sort(peal.begin(), peal.end());
sort(pos.begin(), pos.end());
init();
int id = 0;
for (int i = 0; i < q; i++)
{
int T = peal[i].first;
int idx = peal[i].second;
while (id < pos.size() && pos[id].first <= T)
{
join(pos[id].second, pos[id].second + 1);
id++;
}
int single = upper_bound(b + 1, b + n + 1, T) - b - 1;
ans[idx] = res + single;
}
for (int i = 1; i <= q; i++)
{
cout << ans[i] << "\n";
}
}