Following is the code for counting number of inversions in a permutation(1...n) using fenwick tree. I can't get "inv += query(n) — query(a[i]); update(a[i], 1);" these two steps. Can anyone help?
include <bits/stdc++.h>
using namespace std; long long bit[1000005],a[1000005],n;
void update(int x,int del) { for(;x<=n;x+=x&-x) { bit[x]+=del; } } int query(int x) { int sum=0; for(;x>0;x-=x&-x) { sum+=bit[x]; } return sum; } int main() { cin>>n;
for(int i=1;i<=n;i++) { cin>>a[i]; }
long long inv = 0; for (int i=1; i<=n; i++) { inv += query(n) — query(a[i]); update(a[i], 1); } cout<<inv<<endl; return 0; }