Submission #1142792

#TimeUsernameProblemLanguageResultExecution timeMemory
1142792bestbestPilot (NOI19_pilot)C++20
0 / 100
1094 ms11096 KiB
#include <bits/stdc++.h> using namespace std; #define en '\n' #define sp ' ' typedef long long ll; #define Linux ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pii pair<int,int> const int N=1e6+10; int n,Q; int h[N],y,qs[N]; priority_queue<pii,vector<pii>,greater<pii>> q; vector<int> v; unordered_set<int> s; int ans[N]; int main(){Linux cin >> n >> Q; for(int i=1;i<=n;i++) { cin >> h[i]; s.insert(h[i]); } for(int i=1;i<N;i++){ qs[i]=qs[i-1]+i; } for(auto i:s){ //cout << i << sp; q.push({i,1}); } //cout << endl; h[n+1]=1e6+1; for(int i=1;i<=n+1;i++){ while (!q.empty() && q.top().first<h[i]) { ans[q.top().first]+=qs[i-q.top().second]; v.push_back(q.top().first); // cout << i << "pop" << q.top().first << sp << q.top().second << sp; // cout << qs[i-q.top().second] << en; q.pop(); } for(int k:v)q.push({k,i+1}); v.clear(); } // for(int i=1;i<=s.size();i++)cout << ans[i] << sp; // cout << en; for(int i=1;i<=n;i++)if(!ans[i])ans[i]=ans[i-1]; int cnt,sum; while(Q--){ cnt=0,sum=0; cin >> y; cout << ans[y] << en; } return 0; }
#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...