Submission #1187256

#TimeUsernameProblemLanguageResultExecution timeMemory
1187256aladdin1Pilot (NOI19_pilot)C++20
0 / 100
94 ms22460 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...