Title Link: http://poj.org/problem?id=2299
Discretization + Tree-like array
Textbook Examples of topics
#include <iostream>#include<cstdio>#include<cstring>#include<queue>#include<cmath>#include<vector>#include<stack>#include<Set>#include<map>#include<algorithm>#include<sstream>using namespaceStd;typedefLong Longll;Const intMAXN =500010;structpre{intnum, id; BOOL operator< (ConstPre &b)Const { returnNum <B.num; }}P[MAXN];intA[MAXN], BIT[MAXN], N;intSuminti) { ints =0; while(I >0) {s+=Bit[i]; I-= i &-i; } returns;}voidAddintIintx) { while(I <=N) {Bit[i]+=x; I+ = i &-i; }}intMain () {#ifdef LOCAL freopen ("Input.txt","R", stdin); //freopen ("Output.txt", "w", stdout);#endif while(SCANF ("%d", &n) = =1&&N) { for(inti =0; I < n; i++) {scanf ("%d", &p[i].num); P[i].id=i; } sort (p, p+N); for(inti =1; I <= N; i++) {A[p[i-1].id] =i; } ll ans=0; for(intj =0; J < N; J + +) {ans+ = J-sum (a[j]); Add (A[j],1); } printf ("%i64d\n", ans); for(inti =0; I <= N; i++) {Bit[i]=0; } } return 0;}
POJ 2299 ultra-quicksort discretization + tree-like array