let countReverse = 0;
const kmod = 1000000007;
function InversePairs(data)
{
mergeSort(data);
return countReverse;
}
function mergeSort(arr, len = arr.length){
const mid = Math.floor(len/2);
if(len <= 1){
return arr;
}
const left = mergeSort(arr.slice(0 , mid))
const right = mergeSort(arr.slice(mid , len))
console.log("left , right",left , right)
const res = mergeOrderly(left,right);
console.log("res",res)
return res;
}
function mergeOrderly(left,right){
let i = 0, j = 0;
let newList = [];
if(!left || !right){
return;
}
while (i < left.length && j < right.length){
if(left[i] > right [j]){
countReverse += left.length - i;
countReverse %= kmod;
newList.push(right [j]);
j++;
}else{
newList.push(left [i]);
i++;
}
}
if(i < left.length){
newList = newList.concat(left.slice(i,left.length))
}else{
newList = newList.concat(right.slice(j,right.length))
}
return newList;
}
module.exports = {
InversePairs : InversePairs
};