Submission #624218

#TimeUsernameProblemLanguageResultExecution timeMemory
624218PoonYaPatPilot (NOI19_pilot)C++14
89 / 100
1055 ms96604 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n,qu;
ll ans[1000001],sum;
vector<int> h[1000001];
set<int> s;

ll cal(ll x) {
    return x*(x+1)/2;
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin>>n>>qu;
    s.insert(0);
    s.insert(n+1);
    for (int i=1; i<=n; ++i) {
        int a; cin>>a;
        h[a].push_back(i);
    }
    sum=cal(n);
    for (int i=1000000; i>0; --i) {
        ans[i]=sum;
        for (auto j : h[i]) {
            auto it=s.upper_bound(j);
            int r=*it, l=*(--it);
            sum-=cal(r-l-1);
            sum+=cal(j-l-1);
            sum+=cal(r-j-1);
            s.insert(j);
        }
    }
    for (int i=1; i<=qu; ++i) {
        int x; cin>>x;
        cout<<ans[x]<<"\n";
    }
}
#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...