Submission #968663

#TimeUsernameProblemLanguageResultExecution timeMemory
968663RandomUserVudu (COCI15_vudu)C++17
140 / 140
482 ms19836 KiB
#include <bits/stdc++.h> #define all(x) x.begin(), x.end() using namespace std; using ll = long long; struct BIT { int n; vector<int> tree; void config(int _n) { n = _n + 5; tree.resize(_n+10); } void update(int p, int v) { for(p++; p<n; p+=p&-p) tree[p] += v; } int query(int p) { int ans = 0; for(p++; p>0; p-=p&-p) ans += tree[p]; return ans; } }; int main() { int n, p, i; cin >> n; ll v[n+1], ans = 0; v[0] = 0; for(i=1; i<=n; i++) cin >> v[i]; cin >> p; ll sum = 0; for(i=0; i<=n; i++) { sum += v[i]; v[i] = sum - (ll)i * p; } vector<ll> comp; for(int i=0; i<=n; i++) comp.push_back(v[i]); sort(comp.begin(), comp.end()); comp.erase(unique(comp.begin(), comp.end()), comp.end()); int P; BIT bit; bit.config(n); for(i=0; i<=n; i++) { P = lower_bound(comp.begin(), comp.end(), v[i]) - comp.begin(); ans += bit.query(P); bit.update(P, 1); } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...