Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<cstdio>#include<cmath>using namespace std;const int Max=100000+50;int a[Max],b[Max],n;long long ans,num;void merge_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,b);merge_sort(a,m,y,b);while(p<m||q<y){if(q>=y||(p<m&&A[p]<=A[q]))T[i++]=A[p++];else{for(int j=p;j<m;j++){ans=ans+(A[j]^A[q]);}T[i++]=A[q++];}}for(int i=x;i<y;i++)A[i]=T[i];}return ;}