Submission #399790

#TimeUsernameProblemLanguageResultExecution timeMemory
399790FidiskPilot (NOI19_pilot)C++14
89 / 100
65 ms11952 KiB
#include <bits/stdc++.h> using namespace std; #define oo 1e15 #define fi first #define se second #define sp(iiii) setprecision(iiii) #define IO ios_base::sync_with_stdio(false); cin.tie(0) #define ms(aaaa,xxxx) memset(aaaa,xxxx,sizeof(aaaa)) #define cntbit(xxxx) __builtin_popcount(xxxx) #define getbit(xxxx,aaaa) ((xxxx>>(aaaa-1))&1) typedef long double ld; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<pair<int,int>,int> piii; typedef pair<long long,long long> pll; typedef pair<pair<long long,long long>,long long> plll; typedef pair<pair<long long,long long>,pair<long long,long long>> pllll; typedef pair<pair<long long,long long>,bool> pllb; const ll base=361; const ll mod=1e9+7; const ld eps=1e-5; const ll maxn=1e6; ll n,m,i,a[500009],k,b[500009],r[500009],l[500009],j,ans,pre[500009]; vector<pll> g; vector<ll> q; int main(){ IO; cin>>n>>m; for (i=1;i<=n;i++) { cin>>a[i]; } for (i=1;i<=n;i++) { while (!q.empty()&&a[q.back()]<=a[i]) { r[q.back()]=i-1; q.pop_back(); } q.push_back(i); } while (!q.empty()) { r[q.back()]=n; q.pop_back(); } for (i=1;i<=n;i++) { while (!q.empty()&&a[q.back()]<=a[i]) { r[q.back()]=i-1; q.pop_back(); } q.push_back(i); } while (!q.empty()) { r[q.back()]=n; q.pop_back(); } for (i=n;i>=1;i--) { while (!q.empty()&&a[q.back()]<a[i]) { l[q.back()]=i+1; q.pop_back(); } q.push_back(i); } while (!q.empty()) { l[q.back()]=1; q.pop_back(); } for (i=1;i<=n;i++) { g.push_back({a[i],(i-l[i]+1)*(r[i]-i+1)}); } sort(g.begin(),g.end()); for (i=1;i<=n;i++) { b[i]=g[i-1].fi; pre[i]=pre[i-1]+g[i-1].se; } for (i=1;i<=m;i++) { cin>>k; ans=0; for (j=n;j>0;j/=2) { while (ans+j<=n&&k>=b[ans+j]) { ans+=j; } } cout<<pre[ans]<<'\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...