제출 #446267

#제출 시각아이디문제언어결과실행 시간메모리
446267zxcvbnmVudu (COCI15_vudu)C++14
140 / 140
378 ms39460 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define int ll struct Ft { vector<ll> bit; int n; void build(vector<ll> a) { n = a.size()+2; bit.assign(n+2, 0); } void update(int idx, int x) { while(idx <= n) { bit[idx] += x; idx += idx & -idx; } } ll sum(int idx) { ll sum = 0; while(idx > 0) { sum += bit[idx]; idx -= idx & -idx; } return sum; } }; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); // freopen("test.in", "r", stdin); int n; cin >> n; vector<int> a(n); for(int& i : a) { cin >> i; } int p; cin >> p; vector<ll> sum = {0}; for(int i : a) { sum.push_back(sum.back()+(i-p)); } vector<ll> sums = sum; sort(sums.begin(), sums.end()); Ft ft; ft.build(sums); ll ans = 0; for(ll i : sum) { int idx = lower_bound(sums.begin(), sums.end(), i) - sums.begin(); ans += ft.sum(idx+1); ft.update(idx+1, +1); } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...