int mergeCount(int a[],int b[],int start,int end)
{
if(start+1 == end)
return 0;
int mid = start + (end-start>>1);
int i = start;
int j = mid;
int k = start;
int cnt = mergeCount(a,b,start,mid) + mergeCount(a,b,mid,end);
while(i < mid && j < end)
{
if(a[i] <= a[j])
b[k++] = a[i++];
else
{
cnt += mid - i;
b[k++] = a[j++];
}
}
while(i < mid)
b[k++] = a[i++];
while(j < end)
b[k++] = a[j++];
for(i = start;i < end;i++)
a[i] = b[i];
return cnt;
}
int main()
{
int a[] = {2,3,1,2};
int b[100];
cout << mergeCount(a,b,0,4) << endl;
}