Submission #624234

#TimeUsernameProblemLanguageResultExecution timeMemory
624234PoonYaPatPilot (NOI19_pilot)C++14
100 / 100
658 ms83600 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int n,qu,pre[1000001],pos[1000001],c[1000001]; ll ans[1000001],sum; vector<int> h[1000001]; ll cal(ll x) { return x*(x+1)/2; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>qu; for (int i=1; i<=n; ++i) { cin>>c[i]; h[c[i]].push_back(i); } for (int i=1; i<=n; ++i) { int idx=i-1; while (c[i]>c[idx] && idx>=1) idx=pre[idx]; pre[i]=idx; } for (int i=n; i>=1; --i) { int idx=i+1; while (c[i]>=c[idx] && idx<=n) idx=pos[idx]; pos[i]=idx; } sum=cal(n); for (int i=1000000; i>0; --i) { ans[i]=sum; for (auto j : h[i]) { int r=pos[j], l=pre[j]; sum-=cal(r-l-1); sum+=cal(j-l-1); sum+=cal(r-j-1); } } 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...