Submission #252723

#TimeUsernameProblemLanguageResultExecution timeMemory
252723NONAMEVudu (COCI15_vudu)C++14
140 / 140
394 ms31792 KiB
#include <bits/stdc++.h> #define dbg(x) cerr << #x << " = " << x << "\n" #define fast_io ios_base::sync_with_stdio(0); cin.tie(0); cout.tie() using namespace std; using ll = long long; const int N = int(1e6) + 10; int n; ll a[N], pf[N], p, fen[N]; vector <ll> vec; ll sum(int x) { ll res = 0; while (x >= 0) res += fen[x], x = (x & (x + 1)) - 1; return res; } void upd(int x) { while (x < int(vec.size())) ++fen[x], x = (x | (x + 1)); } int main() { fast_io; cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; cin >> p; for (int i = 0; i < n; ++i) pf[i] = (i - 1 < 0 ? 0 : pf[i - 1]) + a[i]; vec.push_back(0); for (int i = 0; i < n; ++i) { ll vl = pf[i] - p * (i + 1); vec.push_back(vl); } sort(vec.begin(), vec.end()); vec.resize(unique(vec.begin(), vec.end()) - vec.begin()); //for (int i = 0; i < int(vec.size()); ++i) //cerr << vec[i] << " "; //cerr << "\n"; upd(lower_bound(vec.begin(), vec.end(), 0ll) - vec.begin()); ll ans = 0; for (int i = 0; i < n; ++i) { int ps = lower_bound(vec.begin(), vec.end(), pf[i] - p * (i + 1)) - vec.begin(); //cerr << ps << "\n"; ans += sum(ps); upd(ps); } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...