# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
220377 | 2020-04-07T18:56:33 Z | XmtosX | Vudu (COCI15_vudu) | C++17 | 330 ms | 31612 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]=1; int cnt=1; 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
# | 결과 | 실행 시간 | 메모리 | 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 | Incorrect | 322 ms | 30584 KB | Output isn't correct |
5 | Incorrect | 179 ms | 17400 KB | Output isn't correct |
6 | Incorrect | 283 ms | 27124 KB | Output isn't correct |
7 | Incorrect | 287 ms | 28152 KB | Output isn't correct |
8 | Correct | 251 ms | 24568 KB | Output is correct |
9 | Correct | 330 ms | 31612 KB | Output is correct |
10 | Correct | 281 ms | 27516 KB | Output is correct |