voidread(int&x){
x =0;int f =1;char ch =getchar();while(ch <'0'|| ch >'9'){if(ch =='-') f =-1;
ch =getchar();}while(ch >='0'&& ch <='9'){
x *=10;
x +=(int)(ch-'0');
ch =getchar();}
x *= f;}
3.归并+逆序对
voidmerge_sort(int* A,int x,int y,int* T){if(y-x >1){int m = x +(y-x)/2;int p = x, q = m, i = x;merge_sort(A, x, m, T);merge_sort(A, m, y, T);while(p < m || q < y){if(q >= y ||(p < m && A[p]<= A[q])) T[i++]= A[p++];else{
T[i++]= A[q++];
cnt +=(LL)(m-p);}}for(i = x; i < y;++i) A[i]= T[i];}}