#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
const int N=1e6+5;
int a[N];
int ans[N];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,q;
cin>>n>>q;
int H= (n*(n-1))/2+n;
vector<int>vc;
for(int i=1;i<=n;i++){
cin>>a[i];
vc.pb(a[i]*1e9+i);
}
vector<int>qr(q);
for(int i=0;i<q;i++){
cin>>qr[i];
qr[i]=qr[i]*1e9+i;
}
sort(qr.begin(),qr.end(),greater<int>());
sort(vc.begin(),vc.end());
set<int>st={0,n+1};
for(auto p:qr){
int x=p/1e9,id=p% (int)1e9;
while(vc.size() and vc.back()/(int)(1e9)>x){
int idx=vc.back()%(int)1e9;
int R=*st.upper_bound(idx);
int L= *prev(st.lower_bound(idx));
int 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);
st.insert(idx);
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... |