#include #include using namespace std; const int maxn=500010; int a[maxn],b[maxn]; long long cnt; void Merge(int low,int mid,int high)//合并函数 { int i=low,j=mid+1,k=low; while(i<=mid&&j<=high) {//按从小到大存放到辅助数组B[]中 if(a[i]<=a[j]) b[k++]=a[i++]; else { b[k++]=a[j++]; cnt+=(long long)(mid-i+1); } } while(i<=mid) b[k++]=a[i++];//将数组中剩下的元素放置B中 while(j<=high) b[k++]=a[j++]; for(k=low;k<=high;k++) a[k]=b[k]; } void MergeSort(int low,int high)//合并排序 { if(low>1;//取中点 MergeSort(low,mid);//对A[low:mid]中的元素合并排序 MergeSort(mid+1,high);//对A[mid+1:high]中的元素合并排序 Merge(low,mid,high);//合并 } } int main() { int n; while(scanf("%d",&n)&&n) { cnt=0; for(int i=0;i