제출 #624209

#제출 시각아이디문제언어결과실행 시간메모리
624209PoonYaPatPilot (NOI19_pilot)C++14
89 / 100
1088 ms137076 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n,qu;
ll ans[1000001],sum;
vector<int> h[1000001],q[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);
    }
    for (int i=1; i<=qu; ++i) {
        int a; cin>>a;
        q[a].push_back(i);
    }
    sum=cal(n);
    for (int i=1000000; i>0; --i) {
        for (auto s : q[i]) ans[s]=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) cout<<ans[i]<<"\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...