hdu 1328

来源:互联网 发布:阳江市阳东区网络问政 编辑:程序博客网 时间:2024/06/09 22:56
#include<stdio.h>#define N 1000005int in[N],tmp[N];__int64 s;void merge(int l,int mid,int r){int i,j,k;i=l;j=mid+1;k=1;while(i<=mid&&j<=r){if(in[j]<in[i]){tmp[k++]=in[j];j++;s+=mid-i+1;}else{tmp[k++]=in[i];i++;}}while(i<=mid)tmp[k++]=in[i++];while(j<=r)tmp[k++]=in[j++];k=1;for(i=l;i<=r;i++){in[i]=tmp[k];k++;}}void mergesort(int l,int r){if(l<r){int mid=(l+r)>>1;mergesort(l,mid);mergesort(mid+1,r);merge(l,mid,r);}}int main(){int n,i;while(scanf("%d",&n)!=EOF){s=0;for(i=0;i<n;i++)scanf("%d",&in[i]);mergesort(0,n-1);printf("%I64d\n",s);}return 0;}

0 0
原创粉丝点击