class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
const int mod=1000000007;
int MergeSort(int left,int right,vector<int>& data,vector<int>& temp)
{
if(left>=right)
return 0;
int mid=(left+right)/2;
int res=MergeSort(left,mid,data,temp)+MergeSort(mid+1,right,data,temp);
res%=mod;
int i=left,j=mid+1;
for(int k=left;k<=right;k++)
temp[k]=data[k];
for(int k=left;k<=right;k++)
{
if(i==mid+1)
data[k]=temp[j++];
else if(j==right+1||temp[j]>temp[i])
data[k]=temp[i++];
else
{
res+=mid-i+1;
data[k]=temp[j++];
res%=mod;
}
}
return res;
}
int InversePairs(vector<int>& nums) {
vector<int> temp(nums.size());
return MergeSort(0,nums.size()-1,nums,temp);
}
};