Inversion count (using maerge sort)
Inversion count #include<bits/stdc++.h> using namespace std; void merg(long long int st,long long int mm,long long int en); long long int a[10000001],b[10000001],inc=0; void merge_sort(long long int st,long long int en) { int m; if(en>st) { m=(st+en)/2; merge_sort(st,m); merge_sort(m+1,en); merg(st,m,en); } } void merg(long long int st,long long int m,long long int en) { long long int f=st,k=st,sst=m+1,i; while(f<=m && sst<=en) { if(a[f]<a[sst]) ///sst= second start {b[k++]=a[f++];} else {b[k++]=a[sst++]; if(a[f]!=a[sst]) inc=inc+(m-f+1); ///this line makes merge sort to inversion count } } if(f>m) for(i=sst;i<=en;i++) b[k++]=a[i]...