| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
SIMPLE 都过了,为啥WA啊,请大牛帮忙看一下#include<iostream>
using namespace std;
long long a[500000],c[500000];
long long MergeSort(long long a[],long long c[],int left,int right)
{
int i,j,mid,temp,count;
long long total=0;
if(left>right)
return 0;
mid=(left+right)/2;
count=0;
i=left;
j=mid+1;
while(i<=mid && j<=right)
{
if (a[i]>a[j])
{
total+=mid-i+1;//从右表移出一个元素,同时 total 累加左表此时的元素个数
c[count++]=a[j++];
}
else
{
c[count++]=a[i++];
}
}
return total;
}
int main()
{
int n,i,j;
long long total;
while (1)
{ scanf("%d",&n);
if(n==0)
break;
for (i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
total=MergeSort(a,c,0,n-1);
printf("%lld\n",total);
}
system("pause");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator