# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
220374 | 2020-04-07T18:52:41 Z | XmtosX | Vudu (COCI15_vudu) | C++17 | 375 ms | 41312 KB |
#include <bits/stdc++.h> using namespace std; const int N=1e6+6; int n,a[N],P; long long pfx[N]; pair<long long,int> p[N]; int BIT[N]; int query(int x) { int sum = 0; x++; while (x>0) { sum+= BIT[x]; x-=x&(-x); } return sum; } void update(int x) { x++; while (x <= n) { BIT[x] ++; x+=x&(-x); } } int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); scanf("%d",&P); for (int i=1;i<=n;i++) { pfx[i]=pfx[i-1]+a[i]-P; p[i]={pfx[i],i}; } sort(p,p+n+1); pfx[p[0].second]=0; int cnt=0; for (int i=1;i<=n;i++) { if (p[i].first!=p[i-1].first) cnt++; pfx[p[i].second]=cnt; } long long ans=0; for (int i=0;i<=n;i++) { ans+= query(pfx[i]); update(pfx[i]); } cout <<ans; return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 640 KB | Output is correct |
2 | Correct | 6 ms | 512 KB | Output is correct |
3 | Correct | 6 ms | 512 KB | Output is correct |
4 | Correct | 331 ms | 39928 KB | Output is correct |
5 | Correct | 178 ms | 17400 KB | Output is correct |
6 | Incorrect | 311 ms | 31224 KB | Output isn't correct |
7 | Correct | 300 ms | 34940 KB | Output is correct |
8 | Correct | 262 ms | 24440 KB | Output is correct |
9 | Correct | 375 ms | 41312 KB | Output is correct |
10 | Correct | 291 ms | 32376 KB | Output is correct |