题目描述
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007
输入描述:
题目保证输入的数组中没有的相同的数字
数据范围:
对于%50的数据,size<=10^4
对于%75的数据,size<=10^5
对于%100的数据,size<=2*10^5
示例1
输入
复制
1,2,3,4,5,6,7,0
输出
复制
7
先写一个归并排序熟悉一下:
void mymerge(int a[],int l,int mid ,int r){
int * tmp =new int[r-l+1];
int i=0,t1=l,t2=mid+1;
while(t1<=mid&&t2<=r){
if(a[t1]<a[t2]){
tmp[i++]=a[t1++];
}else{
tmp[i++]=a[t2++];
cnt+=mid-l+1;
}
tmp[i++]=a[t1]<a[t2]?a[t1++]:a[t2++];
}
while(t1<=mid){
tmp[i++] = a[t1++];
}
while(t2<=r){
tmp[i++