#include<bits/stdc++.h>
using namespace std;
struct DSU{
vector<size_t> sz, pa, ans;
explicit DSU(size_t size_) : sz(size_, 1), pa(size_) {
iota(pa.begin(), pa.end(), 0);
}
size_t find(int n) {return pa[n]==n ? n : pa[n]=find(pa[n]);}
bool unite_set(int a, int b) {
a=find(a),b=find(b);
if (a==b) return false;
//if (sz[a]<sz[b]) swap(a,b);
swap(a,b);
pa[b]=a;
sz[a]+=sz[b];
return true;
}
};
using ll=long long;
void solve() {
int n,q;
cin>>n>>q;
vector<pair<int,int>> H(n);
vector<int> hn(n);
for(int i=0;i<n;i++) {
cin>>H[i].first;
H[i].second=i;
hn[i]=H[i].first;
}
sort(H.begin(), H.end());
vector<pair<int,int>> Y(q);
for(int i=0;i<q;i++) {
cin>>Y[i].first;
Y[i].second=i;
}
sort(Y.begin(), Y.end());
DSU d(n);
vector<ll> final(q);
for(int tc=0;tc<q;tc++) {
int y=Y[tc].first;
int ans=0;
for(int j=0;j<n;) {
if (hn[j]<=y) {
while(++j<n && hn[j]<=y) d.unite_set(j-1,j);
int x=d.sz[d.find(j-1)];
ans+=((x*(x+1))>>1);
}
else j++;
}
final[Y[tc].second]=ans;
}
for(ll x:final) cout<<x<<'\n';
}
int main() {
cin.tie(0)->sync_with_stdio(0);
// int tc;
// cin>>tc;
// while(tc--)
solve();
}