# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
463727 | 2021-08-11T15:59:14 Z | Hamed5001 | Vudu (COCI15_vudu) | C++14 | 494 ms | 19864 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int mxN = 1e6+10; int BIT[mxN], N, P; vector<ll> A, APR; void add(int idx, int delta) { for (; idx <= N; idx += idx & -idx) BIT[idx] += delta; } int query(int idx) { int ret = 0; for (; idx > 0; idx -= idx & -idx) ret += BIT[idx]; return ret; } void solve() { scanf("%d", &N); A.resize(N); for (auto& a : A) scanf("%lld", &a); scanf("%d", &P); ll sum = 0; for (auto& a : A) { a -= P; sum += a; APR.push_back(sum); } sort(APR.begin(), APR.end()); for (int i = 0; i < N; i++) { add(N - i, 1); } sum = 0; ll ans = 0; for (auto a : A) { ans += query(APR.end() - lower_bound(APR.begin(), APR.end(), sum)); sum += a; add(APR.end() - lower_bound(APR.begin(), APR.end(), sum), -1); } printf("%lld", ans); } int main() { solve(); }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 460 KB | Output is correct |
2 | Correct | 2 ms | 460 KB | Output is correct |
3 | Correct | 2 ms | 460 KB | Output is correct |
4 | Correct | 494 ms | 19300 KB | Output is correct |
5 | Correct | 262 ms | 12848 KB | Output is correct |
6 | Correct | 428 ms | 17208 KB | Output is correct |
7 | Correct | 413 ms | 17728 KB | Output is correct |
8 | Correct | 414 ms | 15460 KB | Output is correct |
9 | Correct | 471 ms | 19864 KB | Output is correct |
10 | Correct | 435 ms | 17352 KB | Output is correct |