#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define ll long long
#define int long long
const int N=1e6+5;
int a[N];
ll ans[N];
bool in[N];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n,q;
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
vector<pair<int,int>>qr(q);
for(int i=0;i<q;i++){
cin>>qr[i].ff;
qr[i].ss=i;
}
sort(qr.begin(),qr.end());
reverse(qr.begin(),qr.end());
vector<pair<int,int>>vc;
for(int i=1;i<=n;i++){
vc.pb({a[i],i});
}
sort(vc.begin(),vc.end());
ll H= (n*(n-1))/2+n;
set<int>st={0,n+1};
in[0]=1;
in[n+1]=1;
for(auto p:qr){
int x=p.ff,id=p.ss;
while(vc.size() and vc.back().ff>x){
int idx=vc.back().ss;
int R=*st.upper_bound(idx);
int L= *prev(st.lower_bound(idx));
ll p=R-L-1;
H-=(p*(p-1)/2+p);
p=idx-L-1;
H+=(p*(p-1)/2+p);
p=R-idx-1;
H+=(p*(p-1)/2+p);
if(in[idx-1]==0 or in[idx+1]==0){
st.insert(idx);
}
in[idx]=1;
vc.pop_back();
}
ans[id]=H;
}
for(int i=0;i<q;i++){
cout<<ans[i]<<'\n';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |