#include <bits/stdc++.h>
#define int long long
int n,q;
int h[1000100];
int y[1000100];
int lefth[1000100];
int righth[1000100];
int ans[1000100];
std::vector<std::pair<int,int>> idx;
std::stack<std::pair<int,int>> stk;
signed main() {
std::cin >> n >> q;
idx.push_back({0,0});
for(int i=1;i<=n;i++){
std::cin >> h[i];
idx.push_back({h[i],i});
}
std::sort(idx.begin(),idx.end());
stk.push({0,1e9});
for(int i=1;i<=n;i++){
while(!stk.empty()&&stk.top().second<=h[i]){
stk.pop();
}
if(stk.empty())lefth[i]=0;
else lefth[i]=stk.top().first;
stk.push({i,h[i]});
}
while(!stk.empty())stk.pop();
stk.push({n+1,1e9});
for(int i=n;i>=1;i--){
while(!stk.empty()&&stk.top().second<h[i]){
stk.pop();
}
if(stk.empty())righth[i]=n+1;
else righth[i]=stk.top().first;
stk.push({i,h[i]});
}
// for(int i=1;i<=n;i++){
// std::cout << lefth[i] << ' ' << righth[i] << '\n';
// }
//std::cout << "___\n";
ans[0]=0;
for(int i=1;i<idx.size();i++){
int idxv = idx[i].second;
ans[i]=ans[i-1]+std::max((int)1,(idxv-lefth[idxv])*(righth[idxv]-idxv));
}
// for(int i=1;i<idx.size();i++){
// std::cout << idx[i].first << ' ' << ans[i] << '\n';
// }
for(int j=1;j<=q;j++){
std::cin >> y[j];
std::pair<int,int> search = {y[j],1e9};
int ansIdx = (std::upper_bound(idx.begin(),idx.end(),search)-idx.begin())-1;
std::cout << ans[ansIdx] << '\n';
}
}