제출 #1096483

#제출 시각아이디문제언어결과실행 시간메모리
1096483Trisanu_DasPilot (NOI19_pilot)C++17
89 / 100
1000 ms102956 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ff first #define ss second int pairs(int l, int r){ int len = r - l + 1; return len * (len + 1) / 2; } signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int n, q; cin >> n >> q; vector<pair<int, int> > qries(q), h(n); int ans[q]; for(int i = 0; i < n; i++) { cin >> h[i].ff; h[i].ss = i; } for(int i = 0; i < q; i++){ cin >> qries[i].ff; qries[i].ss = i; } sort(qries.rbegin(), qries.rend()); sort(h.begin(), h.end()); set<int> s({-1, n}); int curr = n - 1, ans_curr = n * (n + 1) / 2; for(auto qry : qries){ int val = qry.ff, idx = qry.ss; while(curr > -1 && h[curr].ff > val){ auto it = s.lower_bound(h[curr].ss); int r = *it, l = *(--it); r--; l++; ans_curr += pairs(l, h[curr].ss - 1) + pairs(h[curr].ss + 1, r) - pairs(l, r); s.insert(h[curr].ss); curr--; } ans[idx] = ans_curr; } for(auto a : ans) cout << a << '\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...