#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAX=1e6+100,MOD=1e9+7;
unordered_map<int, vector<int>> mp;
vector<int> ans(MAX);
void solve(){
int n,q;cin>>n>>q;
vector<int> arr(n+2);
for(int i=1;i<=n;i++){
cin>>arr[i];
mp[arr[i]].push_back(i);
}
set<int> st;
for(int i=0;i<=n+1;i++)st.insert(i);
int curr_ans=0;
for(auto& [y, indices]:mp){
for(int i:indices){
st.erase(i);
auto itr=st.lower_bound(i);
int j=*itr;
--itr;
int k=*itr;
int d1=(i-k-1),d2=(j-i-1),d3=(j-k-1);
curr_ans-=d1*(d1+1)/2;
curr_ans-=d2*(d2+1)/2;
curr_ans+=d3*(d3+1)/2;
}
ans[y]=curr_ans;
}
while(q--){
int y;cin>>y;
cout<<ans[y]<<"\n";
}
}
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t=1;
while(t--)solve();
}
# | 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... |